Editor编辑器操作

Editor

辅助开发对编辑器进行拓展开发

特殊的文件夹

Editor, Editor Default Resources

命名空间:UnityEditor

如果是游戏逻辑的脚本绝对不允许引用该命名空间,因为打包的时候会报错

如果引用了UnityEditor的类,必须放Editor文件夹,证明不是游戏逻辑,不需要打进安装包

关于mono类里的一些编辑器开发,继承了mono类的简单拓展开发

相关特性:不需要引入UnityEditor

[Tooltip("这是一个int类型的名字为num的变量")]//鼠标在悬停时显示一个tips,解释说明

[Range(1,9)]//通过滑动条对int或者flout(数字类型)进行可拖动赋值,具体是什么类型,根据修饰的变量类型决定的

[Space(100)]//可以生成一片空袭,把上下的变量分隔开,参数决定里分开的高度

[Header("Slider")]//没有特殊的功能,只是做一个简单的分割功能

[HideInInspector]//使公有变量在Inspector界面隐藏,不让其在界面进行赋值,还不影响其他的调用,作用:想让其他的类使用,还不想让其在界面显示并且进行赋值

[System.Serializable]//一个可以序列化的类,修饰类(在类定义的时候)

[System.NonSerialized]//不可序列化

[ContextMenu("ResetValue")]//可以在组件的inspector面板的齿轮按钮下生成一个菜单,作用是在为启动游戏时能进行一些方法的调用

关于Inspector界面的编辑器开发

1.创建一个编辑器的脚本,对mono的一个脚本进行拓展开发

2.找到mono的脚本,跟编辑器的脚本进行关联 — [CustomEditor(typeof(Player))]

3.对Inspactor界面重新刷新 —-public override void OnInspectorGUI ()

4.获取关联脚本的对象,才能获取关联脚本的变量 —Player player = (Player)target;

注意:如果要对inspactor进高级开发,需要引用UnityEditor命名空间,然后继承Editor

//垂直布局

EditorGUILayout.BeginVertical ();

EditorGUILayout.EndVertical ();

//水平布局

EditorGUILayout.BeginHorizontal ();

EditorGUILayout.EndHorizontal ();

//空一行

EditorGUILayout.Space ();

EditorGUILayout.LabelField//标签

EditorGUILayout.ColorField//颜色

EditorGUILayout.FloatField//flot

EditorGUILayout.TextField//string

EditorGUILayout.Vector2Field//向量

第一参数:显示的名字,第二个参数就是值

EditorGUILayout.Slider//滑动条

EditorGUILayout.HelpBox//帮助框

EditorGUI.ProgressBar//进度条

关于window开发 - 必须继承EditorWindow

1.创建一个window。— EditorWindow.GetWindow<MyWindow> ();

2.刷新window的内容 -void OnGUI()

[MenuItem("MyWindow/CreateWindow”)]//在最上方会出现可执行的方法,它修饰的方法必须是静态的方法

EditorGUILayout.ObjectField ("小明的prefab", xiaoming,typeof(GameObject)) as GameObject;//能能放置Object, 物体

显示Object,第一参数是名字,第二个参数值。第三个参数能放进去的类型,一般用typeof进行类型获取

猜你喜欢

转载自blog.csdn.net/qq_39030818/article/details/81216012