在Unity中创建ScriptableObject是一个高效的数据管理方案,特别适用于存储和管理大量非持久化数据。以下是详细步骤和示例代码,教你如何在Unity中创建ScriptableObject: 步骤一:创建ScriptableObject脚本 打开Unity编辑器并创建一个新的项目(如果尚未有项目)。 在项目的Assets文件夹中,右键点击空白
或者使用 Assets/Create 菜单 通过代码创建: // 运行时创建临时实例 var tempData = ScriptableObject.CreateInstance<GameData>(); // 创建持久化资源 #if UNITY_EDITOR var data = ScriptableObject.CreateInstance<GameData>(); UnityEditor.AssetDatabase.CreateAsset(data, "Assets/Data/NewData.asset"); UnityEd...
运行时修改ScriptableObject的值可立即生效,适合调试和平衡数值。 二、构建游戏框架的关键应用 1. 数据驱动配置 创建物品/角色配置 [CreateAssetMenu(fileName = "ItemConfig", menuName = "Game/Item Config")] public class ItemConfig : ScriptableObject { public string itemName; public Sprite icon; public int...
通常我们的脚本会继承MonoBehaviour,SO与其不同的是继承自ScriptableObject。 你不能直接在GameObject上使用它。上述代码中 CreateAssetMenu 属性会在Unity引擎的右键菜单中新提供一个操作选项。 点击Assets -> Create -> MyScriptableObject ,或者右键点击Project窗口,就可以从上述代码定义的SO类来实例化一个自定义资产。(...
print("不存在"); questionAsset = ScriptableObject.CreateInstance<CashQuestion>(); questionAsset.test = "123"; AssetDatabase.CreateAsset(questionAsset, tex_Path_NoExt + ".asset"); } else { print("已存在"); questionAsset.test = "abc"; } }...
使用[CreateAssetMenu] 属性可以创建自定义菜单项,用于在编辑器中创建 ScriptableObject 对象。 警告:不建议在游戏运行时通过代码修改 ScriptableObject 中的字段,可能会导致编辑器中出现奇怪的行为。 2.3 创建对象数据:Scriptable Object Item.cs 脚本 ItemData 类继承自 ScriptableObject,并定义了四个属性:id、displayName...
[CreateAssetMenu(fileName ="New Skill",menuName ="Skills/Minion")] public class Skill:ScriptableObject { [Header("技能名称")] public new string skillName; [Header("最小释放距离")] public int minDistance; [Header("最大释放距离")]
“ScriptableObject 是一个可独立于类实例来保存大量数据的数据容器。ScriptableObject 的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制件在附加的 MonoBehaviour 脚本中存储不变的数据,这将非常有用。 每次实例化预制件时,都会产生单独的数据副本。这种情况下可以不使用该方法并且不存储重复数据...
在Unity中,序列化ScriptableObject中的脚本实例是指将脚本实例保存为ScriptableObject的属性,以便在编辑器中进行配置和持久化。 ScriptableObject是Unity中的一种特殊类型,它可以保存数据并在不同场景和对象之间共享。通过将脚本实例序列化到ScriptableObject中,可以在编辑器中对其进行配置,并在运行时使用。
[CreateAssetMenu(fileName = "##创建Scriptable Obj时候默认的名字",menuName = "##右键菜单里的路径,比如Make a Bullet/Bullet")]//方便从菜单快速创建子弹副本publicclassBullets:ScriptableObject{publicfloatbulletSpeedpublicfloatdamagepublicintlifeSpanpublicBulletTypebulletType} ...