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进行类型获取