ScriptableObject是一个类,它允许你存储大量用于共享的数据独立脚本实例,不要迷惑这个类同样可以叫做 SerializableObject,可以理解成是一个Unity串行化工具。这是一个编辑器类并且你可以在Inspector面板中编辑数据。例如: 如果你有一个存储了一百万数据的 int[],这个数组占用4MB内存,放在Prefab上,那么当你每次实例化Prefab,你都会得到这个数组的一个副本。如果你实例化10个这个 Prefab,那就会占用40MB内存。 可序列化的类型 Unity的serializes(序列化)支持所有原生的类型,也支持strings,arrays,lists还有Unity的Vector3等都支持,而且还支持自定义的类,但需要有一个串行的属性。 使用情景 预期使用情况,使用ScriptableObject是减少内存使用量,避免Values的副本。但是你也可以用它来定义可插拨的数据集。这方面的 一个例子是:想像RPG游戏中的NPC商店,你可以创建自定义ShopContens ScriptableObject,每个资产定义了一组可用于购买物品。在这样一个场景,游戏中有三个区域,每个区域都可以提供不同层级的项目。你的店铺 脚本将引用ShopContents对象,定义哪些项目可供选择。 Tips 当在检查ScriptableObject引用时,你可以在Inspector双击这个参考字段。 你可以创建一个自定义的Editor来查看不同的类似在Inspector,以帮助你管理它所表示的数据。 游戏关卡数据序列化 策划需求 一个游戏中的配置表数据,这些数据一般都是由策划在Excel等工具上配置,要运用到游戏中时,一般需要做一个转换,比如类似转换。这时可以使用 ScriptableObject,将数据预先处理成程序需要访问的数据结构,存储在ScriptableObject中,然后打包成一个外部文件,这样 在游戏运行的时候就不用做解析和组装了,这个功能对大批量的公用数据尤其有用!! 思路分析 策划在Art工程拼接好关卡信息之后,客户端根据关卡的中元素的位置,大小等信息生成出关卡,这中间有一个存储关卡信息的过程。我们的做法是把关卡 的信息存储在ScriptableObject上,然后在E...
[Unity3d开发与wordpress技术分享]本站是一个技术资源分享网站!主要分享wordPress主题,WordPress插件,opencart,Magento外贸商城主题,Html5网站模板,unity3d源码,unity3d插件.同时本站也有原创的各类免费资源、源码、福利和心得!关注站长建站SEO,unity3d游戏开发,移动APP等技术