可以用于保存数据,减少内存消耗,在场景外传递数据等。
[CreateAssetMenu(fileName = "PlayerData", menuName = "MyProject/PlayerData", order = 1)]
继承 ScriptableObject
从菜单中创建
用代码创建
var level = ScriptableObject.CreateInstance<ScriptableObject类的类名>();
//在传入的路径中创建资源
AssetDatabase.CreateAsset(level, @"Assets/Data/Levels/" + "name" + ".asset");
AssetDatabase.SaveAssets(); //存储资源
AssetDatabase.Refresh(); //刷新
注意
SO文件在编辑器模式下,会保存游戏中更改的变量,并且在游戏重启时依旧保持更改。但是在发布后的游戏中,仅在游戏内做出的更改会被保存,即保存在内存当中,而当游戏退出时则不会保存,会恢复为原始值。如果需要永久保存,则需要使用序列化。