基础知识:
1、将数据储存资源文件中,像普通资源一样管理,退出也会保存修改
2、继承自UnityEngine.Object,不必附着在对象上也无需/不能赋给Gameobject或Prefab
3、可以被serialised,可以在资源面板创建一个Asset文件,把数据存储在资源文件中,通过属性面板可修改数值。
4、可以放到.asset文件中,因此可以自定义我们需要的资源类型
5、本身是个类,可以引用,在项目之间共享
6、回调少 :OnEnable 、OnDisable、OnDestroy
7、persistent:当它被绑定到.asset文件或者AssetBundle等资源文件中的时候(它可以通过Resources.UnloadUnusedAssets来被unload出内存。可以通过脚本引用或其他需要的时候被再次load到内存)
非persistent:通过CreateInstance<>来创建的时候(它可以通过GC被直接destroy掉(如果没有任何引用的话)。如果不想被GC的话,可以使用HideFlags.HideAndDontSave)
使用:1、创建一个类(既ScriptableObject类),继承自ScriptableObject即可
usingUnityEngine;//在资源面板右键Create,创建该类对应的Asset文件
[CreateAssetMenu(fileName = "GameDataAsset", menuName = "Creat GameData Asset")]public classGameData : ScriptableObject
{