class in UnityEditor / 继承自:ScriptableObject描述 从中派生自定义编辑器的基类。使用此类可为对象创建您自己的自定义检视面板和编辑器。 设想一个 MyPlayer 脚本,其中包含盔甲和伤害的变量,以及对枪支 GameObject 的引用。 using UnityEngine; using System.Collections;// This is not an editor script. public ...
EditorGUILayout.BeginHorizontal(); GUILayout.Label("Prefab"); charData.prefab=(GameObject)EditorGUILayout.ObjectField(charData.prefab,typeof(GameObject),false); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Max Health"); charData.maxHealth=EditorGUILayout.FloatField...
使用临时 ScriptableObject Inspector 及其 Preset 按钮显示自定义设置的EditorWindow脚本示例(保存到名为Editor/MyEditorWindow.cs的文件): using UnityEngine; using UnityEditor; using UnityEditor.Presets; public class MyEditorWindow : EditorWindow { // 获取预设图标和样式来进行显示 private static class Styles ...
这时候需要创建一个继承自PropertyDrawer的类,重写OnGUI方法,使用EditorGUI来绘制自定义的界面。比如,用EditorGUI.IntPopup或者EditorGUI.EnumPopup来显示单选按钮组。然后加上[CustomPropertyDrawer(typeof(MyEnum))]属性,指定这个绘制器用于哪个类型。 脚本化对象(ScriptableObject)可以用来创建自定义的资源文件,比如游戏配置...
通过检查GUI.changed,如果发现用户修改了任何值,EditorUtility.SetDirty代码就会执行。其作用是将指定对象标记为脏。 [Unity内部使用dirty标记去确定资源什么时候被修改,并且需要被存盘。比如,你修改了一个prefab的MonoBehaviour或者ScriptableObject变量,你必须告诉Unity这个值被改变。Unity内置的组件,其内部在属性变化时自动调...
就像MonoBehaviour 一样,ScriptableObject 派生自基本 Unity 对象,但与 MonoBehaviour 不同,不能将 ScriptableObject 附加到游戏对象。正确的做法是需要将它们保存为项目中的资源。 如果使用 Editor,可以在编辑时和运行时将数据保存到 ScriptableObject,因为 ScriptableObject 使用 Editor 命名空间和 Editor 脚本。但是,在已部署...
新建脚本XmlAsset.cs,继承自ScriptableObject,同样放置在Editor文件夹下 AI检测代码解析 public class XmlAsset : ScriptableObject { public string XmlName; public string root; public List<elmNew> child = new List<elmNew>(); } 1. 2. 3. 4. 5. 6. 回到CustomTool脚本,声明变量 AI检测代码解析 //ass...
通过检查GUI.changed,如果发现用户修改了任何值,EditorUtility.SetDirty代码就会执行。其作用是将指定对象标记为脏。 [Unity内部使用dirty标记去确定资源什么时候被修改,并且需要被存盘。比如,你修改了一个prefab的MonoBehaviour或者ScriptableObject变量,你必须告诉Unity这个值被改变。Unity内置的组件,其内部在属性变化时自动调...
public class TestScriptObject : ScriptableObject { public string Name; } 使用CreateAssetMenu的Attribute的作用是使得其可以在Project窗口中右键生成: ScriptObject与System.Serializable的差别 初学者可能会对这两个比较困扰(我一开始就比较困扰),一开始我把ScriptObject拖拽到Monobehaviour上面发现其不会显示出ScriptObje...
如果一个ScriptableObject(下面简称为SO)的HideFlag设置为HideInHierarchy,那么LoadAllAssetRepresentationsAtPath会将其忽略 如果不将SO保存为Asset,运行游戏后将会被GC,从而丢失引用 资源管理相关 //添加子Asset UnityEditor.AssetDatabase.AddObjectToAsset(subAsset, mainAsset); ...