Unity3D笔记第十八天——编辑器的拓展

Unity引擎结构
Unity引擎除了提供大部分通用功能以外,还为开发者提供了编辑器的扩展开发接口,开发者可以编写编辑器脚本,打造最适合自己游戏的辅


助工具和定制的编辑器,通过使用编辑器类(Editor Class)来进行扩展开发。
Unity Editor编辑器拓展一般用3个类: ScriptableObject、 EditorWindow、Editor
Editor文件夹
编辑器脚本需要放在Assets文件夹中的Editor文件夹下,如果没有则需要手动创建。
Editor-自定义检视视图
在游戏开发过程中,对游戏参数的调整是一项非常繁琐且耗时的工作。在Unity编辑器的各个视图中,Inspector视图可以称得上是使用频率


最高的视图之一,因为各种参数的编辑和修改都离不开Inspector视图。对于自定义的脚本组件,Unity的Inspector视图只提供了最基本的修


改编辑功能,它把所有可编辑参数一一罗列出来,但没有任何智能化的操作。如果能提高Inspector视图的编辑效率,将可以减少很多在参数


调整上花费的时间,进而提升游戏开发的效率。


需要在文件开始添加using UnityEditor;
需要在编辑器类前添加[CustomEditor(typeof( 类型名 ))]
编辑器脚本需要继承Editor类。
重写OnInspectorGUI函数


GUILayout类
GUILayout类:用于GUI自动布局的接口。
Label:创建一个自动布局的标签
Box:创建一个自动布局的box
Button:创建一个单次按钮
BeginHorizontal:开始一个水平控件的组
EndHorizontal:关闭由BeginHorizontal开始的一个组
BeginVertical:开始一个垂直控件的组
EndVertical:关闭由BeginVertical开始的一个组


EditorGUILayout类
TextField:制作一个文本字段
IntField:制作一个文本字段用于输入整数
FloatField:制作文本字段用于输入浮点值
Slider:制作一个滑动条用户可以拖动来改变值,在最小和最大值之间
IntSlider:制作一个滑动条用户可以拖动来改变一个整数值,在最小和最大值之间
ObjectField:制作一个物体字段。可以指定物体无论是通过拖拽物体或通过物体拾取器选择物体
Vector3Field:制作X , Y & Z字段用于输入Vector3
ColorField:制作一个用于选择颜色的字段
Space:在上一个控件和跟随的控件之间,制作一个小的空距
BeginToggleGroup:开始带有开关按钮的一个垂直组,在这里立即启用或禁用控件
EndToggleGroup:关闭BeginToggleGroup开始的组
BeginHorizontal:开始一个水平组并获取返回矩形
EndHorizontal:关闭一个BeginHorizontal开始的组


EditorWindow类
EditorWindow用于自行创建窗口,也支持自定义窗口布局。自定义窗口需要让脚本继承EditorWindow在设置MenuItem继承自


ScriptableObject,在UnityEditor命名空间下。
一般有3个步骤:
类SomeClass继承EditorWindow  类名即窗口名;
静态函数前加[MenuItem("dir/name")],函数体内创建窗口
SomeClass  sc = (SomeClass)EditorWindow.GetWindow (typeof (SomeClass));
 OnGUI函数里写窗口结构;
1.MenuItem创建自定义菜单
2.MenuItem属性允许添加菜单项到主菜单和检视面板上下文菜单。
3.MenuItem属性把任意静态函数变成为一个菜单命令。仅静态函数能使用这个MenuItem属性。
可以使用以下指定字符创建热键:% (Windows上为ctrl, OS X上为cmd), # (shift), & (alt), _ (无修改键)。热键文本必须在前


面加一个空格字符。


ScriptableWizard
ScriptableWizard: 从这个类派生来创建一个编辑器向导。
Editor GUI元素并不一定要在Inspector中。它还可以创造主观编辑器窗口,可以像任何Unity内置窗口那样一动,而且可以像在检查器中那


样使用GUI命令。最简单的方法就是使用ScriptableWizard,这很像一个对话盒。你在呈现后设定某些值,然后点击按键让其施展“魔法”。


DisplayWizard:创建一个向导
DisplayWizard.<T>:创建一个向导
OnWizardCreate:当用户在创建按钮上点击时调用
OnWizardUpdate:当向导被打开或只要用户在向导改变了某些东西时被调用
OnDrawGizmos:当向导可见时每帧调用
OnWizardOtherButton:当用户在其他按钮点击时,允许您提供一个动作


SelectionMode类:
可以用来调整Selection.GetTransforms返回的选择。
Unfiltered:返回全部的选择
TopLevel:只返回最高层次的选择
Deep:返回选择和所有子转换的选择
ExcludePrefab:不包括任何prefabs的选择
Editable:不包括任何要被修改的对象
Assets:只返回在资源目录中的资源对象
DeepAssets:如果选择包含文件夹,还包括所有资源和文件夹的子文件夹文件的层次结构


AssetDatabase 资源数据库
AssetDatabase是一个对资源进行读写和各种操作的接口。
Contains:资源中是否存在该对象
CreateFolder:创建一个新的文件夹
CreateAsset:在指定的路径新建资源
AddObjectToAsset:将objectToAdd这个对象添加到指定路径上的现有资源
GetAssetPath:返回相对于工程资源位置的路径名
ImportAsset:导入指定路径的资源
CopyAsset:复制指定路径的资源文件到一个新的路径
LoadAssetAtPath:返回在指定位置assetPath下第一个类型是type的资源对象
LoadMainAssetAtPath:指定路径加载主资源
Refresh:重新导入有更新的资源
OpenAsset:用关联的程序打开资源文件
SaveAssets:将所有未保存的资源更改写入磁盘
ExportPackage:导出assetPahtNames定义的资源到一个unitypackage里,并命名filename
ImportPackage:将packagePath下的资源包导入到当前工程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值