首先,确保你的ScriptableObject资产位于Resources文件夹中。然后,你可以使用以下代码加载它: csharp using UnityEngine; public class GameManager : MonoBehaviour { public GameSettings gameSettings; void Start() { // 加载GameSettings ScriptableObject gameSettings = Resources.Load<GameSettings>("Game...
使用[CreateAssetMenu] 属性可以创建自定义菜单项,用于在编辑器中创建 ScriptableObject 对象。 警告:不建议在游戏运行时通过代码修改 ScriptableObject 中的字段,可能会导致编辑器中出现奇怪的行为。 2.3 创建对象数据:Scriptable Object Item.cs 脚本 ItemData 类继承自 ScriptableObject,并定义了四个属性:id、displayName...
代码示例为加载项目工程的“Resources”目录下"kbData/d_xbAvatar_inittab.py.datas"文件,文件是json格式,所以可以使用litjson进行解析 4)ScriptableObject数据容器 简介 ScriptableObject是一个可独立于类实例来保存大量数据的数据容器。如果你想创建独立于GameObjects的对象,你可以从中派生一个类。 常用的api Static Meth...
// 示例:通过管理器控制修改 public class GameSettings : ScriptableObject { private static GameSettings _instance; public static GameSettings Instance => _instance ??= Resources.Load<GameSettings>("GameSettings"); public float MasterVolume; } // 修改时通过接口控制 public void SetVolume(float volume)...
ScriptableObject.CreateInsatance<MyScriptableObjectClass>(); TIPS: 销毁SO 与其他Unity对象一样,一个SO文件也包含了原生C++部分和C#托管部分。你可以直接销毁原生C++部分,但是C#托管的部分依然会留存在内存中,直到资产垃圾收集器(garbage collector)清理它。当你修改了常见,或者调用了 Resources.UnloadUnusedAssets 时,...
以下是原文链接:Database System in Unity using Resources and ScriptableObjects – The Knights of Unity <!-- more --> 1.1 引言 基本情况介绍 在进行 Unity 开发时,经常会有一个问题:如何在 Unity 当中存储数据? 一个很有可能的回答是:创建一个数据库,然后尽可能使这个数据库易于被开发者或者设计师进行使...
1.创建 ScriptableObject 类 2.创建 Asset 文件 3.读取 Asset 文件,修改其属性值,数据变化将自动保存到 Asset 文件 publicclassGetGameData:MonoBehaviour{ GameData gameData;voidStart(){ gameData = Resources.Load<GameData>("GameDataAsset"); Debug.Log(gameData.testStr); ...
可以通过加载或者直接挂载脚本的字段上引用ScriptableObject //直接挂在到Mono的字段中publicLevelDatalevelData;voidStart(){Debug.Log(levelData.id);//使用资源加载方式获取数据varlevelData1=Resources.Load<LevelData>("xxx/xxx");Debug.Log(levelData1.id);} ...
s_instance = Resources.Load<GameConfig>(PrefabPath); return s_instance; } 至此整个环节就全部通了。可以发现,用作配置文件的话,ScriptableObject比MonoBehaviour还是方便和专业了很多的。 ok,这次的内容就介绍到这里。 附:完整代码(Unity5.3测试通过):
上一小节我们讲解了Unity引擎的Resources.Load函数是如何实现资源加载的,但众所周知,该函数返回的GameObject是不能直接使用在游戏中的,想让它出现在场景树中必须再调用Object.Instantiate函数对这份资源进行实例化。但奇怪的是,Instantiate函数返回的对象类型和传入的资源类型是完全相同的,而常见的引擎设计一般是传入一个Mes...