Unity数据存储方式—ScriptableObject

ScriptableObject是什么?

ScriptableObject是Unity提供的一个数据配置存储类,是一种自定义类型的数据资源文件;

继承自UnityEngine.Object;其实例会被保存为.asset类型的资源文件;


ScriptableObject主要作用:

  1. 编辑器模式下的数据持久化
  2. 配置文件(游戏中的数据)
  3. 数据复用,多个对象使用同一套数据

注意:在游戏发布后,ScriptableObject存储的数据不会被改变;


ScriptableObject的创建方法:

一:为继承自ScriptableObject类添加CreatMenuAsset特性,在编辑器的菜单中创建资源文件;

[CreateAssetMenu(fileName = nameof(MainWeaponSO), menuName = "SO/" + nameof(MainWeaponSO), order = 0)]
public class MainWeaponSO : ScriptableObject{}

二:利用ScriptableObject的静态方法创建对象,然后将数据对象保存在工程目录上;

public class CreatSO : Editor
{
    [MenuItem("SO/WeaponSO")]
    public static void CreatWeaponSO()
    {
        var weaponDate = CreateInstance<WeaponDate>();
        AssetDatabase.CreateAsset(weaponDate, "Assets/Resources/So/WeaponSO.asset");
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
    }

    [Serializable]
    public class WeaponDate : ScriptableObject
    {
        public string id;
        public string attackInterval;
    }
}

ScriptableObject中的生命周期函数

  • Awake(数据文件创建时调用)
  • Ondestory(数据文件销毁时调用)
  • OnEnable(创建或者加载对象时调用)
  • OnDisable(对象销毁时)
  • OnValidate(编辑器情况下调用)

加载数据的方式

  • 直接在数据面板拖拽
  • 使用Resources,Addressables,AssetBundles等方式进行加载

猜你喜欢

转载自blog.csdn.net/lel18570471704/article/details/132451707
今日推荐