Unity中的Editor文件夹是一个具有特殊用途的目录,主要用于存放与编辑器扩展功能相关的脚本和资源。
一.纠缠不清的UnityEditor
我们Unity中进行游戏构建时,我们经常遇到关于UnityEditor相关命名空间丢失的报错,这时候,只得将报错一条条打开,清除无用的命名空间代码片段。
注:在使用vs进行Unity脚本编程时,出现手误时,vs会自动引用相关的命名空间,而有时这些多余的命名空间我们并没有使用到。
回到Editor话题上,在构建时出现Editor相关命名空间丢失报错的原因是:
在打包时,Unity默认不会将任何UnityEditor的内容打包,如果存在,将无法构建,出现报错。
解决方法:使用预编译指令(需要在游戏脚本中使用编辑器功能时)
对于需要使用编辑器功能的代码,只要确保游戏运行后对他没有用,可以使用 # if UnityEditor 和 # end if 将其包裹,被包裹的代码在打包时将会被忽视掉。
二.Editor脚本特殊属性
(这里特指使用UnityEditor命名空间的脚本)
1.仅限编辑器环境运行
Editor文件夹内的脚本(如继承自EditorWindow
或Editor
的类)仅在Unity编辑器中生效,不会被打包到最终构建的游戏或应用程序中。
2.脚本编译优先级
Unity将Editor文件夹中的脚本分配到不同的编译阶段(例如在Editor
编译组中),确保这些脚本可以引用其他运行时脚本,但运行时脚本无法反向引用Editor脚本,避免构建错误。
3.自定义工具开发
用于创建编辑器工具,常用用途如下:
1.自定义Inspector面板
我们可以编写Editor脚本来完善目标正常游戏脚本的组件面板
例如,我们可以不在游戏脚本中使用特性命令而实现丰富面板信息功能
2.自动化资源导入处理
3.拓展菜单功能
通过Editor脚本实现编辑器面板下的菜单功能拓展。
这些功能我后面会继续深入学习总结。
三.Editor文件夹注意事项
1.路径规则
命名位置:必须直接或间接位于Assets目录下,文件夹名称必须为Editor(大小写敏感)
和Resources文件夹类似,Unity支持项目中存在多个Editor文件夹(可能用于不同功能模块的独立管理),Unity会自动合并处理。
2.避免运行时依赖
若游戏脚本(如MonoBehaviour
)引用了Editor文件夹内的代码,会导致构建失败,需严格隔离编辑器与运行时逻辑。
Editor文件夹下的Mono脚本不可用,使用也无意义,Editor文件夹下存放任何游戏逻辑都是不合理的,在其中的MonoBehavior也会完全失效。
尝试挂载Editor文件夹下的MonoBehaviour脚本(下图)
3.特殊文件夹冲突
若同时存在Plugins/Editor
和Editor
文件夹,Unity会优先编译Plugins/Editor
中的脚本。
本篇完~