• 关于使用ScriptObject作为项目数据配置


    最近发现新项目中使用了很多ScriptObject作为配置数据,对于ScriptObject 我先前经历的几个项目都很少或者几乎不使用它作为配置。为什么呢?


    优点

    • 编辑器模式下运行时可实时修改资源数据并会保存到本地。 真机不行。
    • 可视化,编辑简单。
    • 可直接引用unity的其他资源 如引用一个prefab,也可被其他资源引用。
    • ScriptObject加载上来如果不Instinate,则共享这一份数据。因此也适合做配置.不过MonoBehaviour的gameobject不实例化也是一样的效果。

    缺点

    • 数据量大了之后可编辑性并不比Excel好。
    • 删除修改字段会涉及到所有其他ScriptObject发生变化,更新量大不说,且增加删除字段对于使用lua作为热更方案是无法更新的。
    •  涉及到客户端和服务器的共同配置更不能使用ScriptObject了。
    • ScriptObject可以直接关联Unity中的其他资源,比如直接引用一个prefab,在真机上,直接关联,加载该ScriptObject时会同时加载其引用的Prefab,但是ScriptObject常被用作配置,大部分情况不需要实时加载引用资源。当然可以记录其引用路径,但需要做引用丢失的检测(引用的prefab被删除的情况) 这个是可以做到的。但是如果记录路径 那不如使用excel或者json、xml等格式。

    应用场景  

    在我看来,结合其优点缺点,可以考虑在编辑器模式下使用ScriptObject存储数据(可视化+方便运行时调试数据,运行时保存),打包之前会生成json等作为真机运行时数据。这样即使用了ScriptObject的优点,又可以通过直接更新json中间文件抵达热更新的效果。


    以上仅为个人见解。

  • 相关阅读:
    【毕业设计源码】基于java的足球联赛管理系统的设计与实现
    使用python做了一个pdf转word的小工具
    并发-JUC
    Spring源码之Mvc的启动挂载流程
    Spring自动装配
    Eureka之使用详解
    YOLOv8优化策略:轻量级Backbone改进 | 高效模型 (Efficient MOdel, EMO),现代倒残差移动模块设计 | ICCV2023
    谈一谈我对三层架构和MVC模式的理解
    系统性能指标
    LambdaQueryWrapper 的常用方法
  • 原文地址:https://blog.csdn.net/kangluo1/article/details/134095227