当然,ScriptableObject的asset文件本身拥有Inpsector编辑显示能力,可以单独用来保存数据使用。比如,建立如下一个ScriptableObject子类: usingUnityEngine;usingSystem.Collections;// 生成入口到Unity菜单Assets->Create下[CreateAssetMenu(menuName = "Create ShowObject")]publicclassShowObject:ScriptableObject{publicVector3positio...
ScriptableObject 是一个可独立于类实例来保存大量数据的数据容器。ScriptableObject 的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制件在附加的 MonoBehaviour 脚本中存储不变的数据,这将非常有用。
在使用ScriptableObject之前,我研究过官方文档,但很显然,里面并没有说的多详细,倒是在CSDN上有很多博主给出了一些常见错误:在ScriptableObject里面试图保存多维数组;在ScriptableObject里保存类时没有对类进行序列化;在editor运行时ScriptableObject的数据更改不会保存,要特殊标记为dirt才能将其更新到磁盘中,等等等等。 在看...
对ScriptableObject 派生类型进行标记,使其自动列在 Assets/Create 子菜单中,以便能够轻松创建该类型的实例并将其作为“.asset”文件存储在项目中。 变量 fileName此类型的新建实例使用的默认文件名。 menuNameAssets/Create 菜单中显示的此类型的显示名称。
通常我们的脚本会继承MonoBehaviour,SO与其不同的是继承自ScriptableObject。 你不能直接在GameObject上使用它。上述代码中 CreateAssetMenu 属性会在Unity引擎的右键菜单中新提供一个操作选项。 点击Assets -> Create -> MyScriptableObject ,或者右键点击Project窗口,就可以从上述代码定义的SO类来实例化一个自定义资产。(...
创建好的asset文件也可以在Inspector中进行编辑。 1usingSystem.Collections.Generic;2usingUnityEngine;34[CreateAssetMenu]5publicclassChatConfig : ScriptableObject6{7[SerializeField]8publicList<string>ChatContent;9} 这里写一个简单的数据。 其中[CreateAssetMenu]属性可以在Create里点击对应名称创建asset文件。如下图...
using UnityEngine; //在Asset菜单下添加选项,用于生成Script [CreateAssetMenu(fileName = "DataItemList_SO", menuName = "Inventory/DataItemList")] public class DataItemList_SO : ScriptableObject { [SerializeField]//因为可将private的参数在inspect串口编辑 ...
RuntimeSet也就是运行时集,比如在游戏运行时游戏内的所有敌人就是一个运行时集,有些情况下我们需要得到这个RuntimeSet来对所有集合内的object做统一的处理,那么ScriptableObject就是运来存放运行时集RuntimeSet的最佳选项,我们只需要让需要的object在被生成时将自己注册进存放进ScriptableObject所做的RuntimeSet中,就可以...
使用[CreateAssetMenu], 在Unity中右键指定的菜单即可创建ScriptableObject类型的资源. 如图: 然后手动填写对应的值, 就能持久化下来, 最后加载资源进行实例化即可得到对象. public static void Deserialize(string filePath) { ScriptableObjectTest test = AssetDatabase.LoadAssetAtPath<ScriptableObjectTest>(filePath); ...
2、创建ScriptableObject类 using UnityEngine; [CreateAssetMenu(menuName = "装备/物品")] public class ItemSO : ScriptableObject { public Sprite itemSprite;//物品图片public EquipType equipType;//物品类型public string itemName;//物品名称[TextArea(4,4)]//Text的特性,可以自定义书写范围的大小public st...