真Unity3d_Editor扩展工具基础入门

来源:互联网 发布:java软件设计 编辑:程序博客网 时间:2024/06/05 18:18

2017.01

“”不是很全,边做边补全“”

2017.07

这个文章只完成了1/10,发现Unity3d对编辑器的支持真不错,1是人家真的是从编辑器起家的(shader编辑器,但绝不是3D引擎),2是从EditorUtility和UnityEditor几个包来看,是几个不同的团队做的,因为编辑器和编辑器底层,划分很好,很清晰(假如你是做游戏几年的,可能你连EditorUtility都没真正用过,但Unity团队花了不少功夫在上面,因为看起来就是功能很多划分很清晰,也就是你做了几年,但却连Unity3d一大部分功能你都还没用上)

如果想看C#基础语法请看

http://blog.csdn.net/avi9111/article/details/72724578


基本概要

现在Asset Store上总共有多少个编辑器(Editor)扩展?

答案是:


首先,自定义编辑器脚本基本上都会引入这个包

using UnityEditor;

而这种脚本,打包的时候,不可不说问题很大,解决方案就是在所有你的这些自定义脚本(for Editor)放在一个Editor目录下,

例如 : YouProjectName/Scripts/Editor

Editor目录这个是Unity3d的保留目录名,也就是你可以建多个,在不同的路径,

总之在Editor目录下的文件都会被当做是编辑器扩展,打包的时候并不会连同你的应用或者游戏一起被打包


其次,Inspector扩展如何做

[CustomEditor(typeof(Bloom))]public class BloomEditor : Editor{ public override void OnInspectorGUI()     {}}

* 继承Editor,其实只是继承Editor Window界面,但还不是Inpector扩展,OnInspectorGUI 如同OnGUI,所以,你懂的

*由于是继承Editor,而不是平时的MonoBehavior(废话),所以一般的gameobject, transform等不能用



最后,和Game | Scene 的交互


GUI语法

界面自定义的选择不多,考虑到编辑器扩展,最少的代价换取最方便的功能,所以原生的GUI是大部分编辑器扩展工具的选择,但其实,你也不太可能在自定义的编辑器里面引入NGUI等框架,虽然可以也真有人这么做,但是NGUI并不是设计出来做编辑器扩展的。


Editor工具

打开提示对话框和选择文件

/* you may use these codes for EditorEditorUtility.DisplayDialog("Select Texture", "You must select a texture first!", "OK");string path = EditorUtility.OpenFilePanel("Overwrite with png", "", "png");if (path.Length != 0){WWW www = new WWW("file:///" + path);www.LoadImageIntoTexture(texture);}*/