Unity编辑器功能及拓展(1) —特殊的Editor文件夹

Unity中的Editor文件夹 是一个具有特殊用途的目录,主要用于存放与编辑器扩展功能相关的脚本和资源。

一.纠缠不清的UnityEditor

我们Unity中进行游戏构建时,我们经常遇到关于UnityEditor相关命名空间丢失的报错,这时候,只得将报错一条条打开,清除无用的命名空间代码片段。

注:在使用vs进行Unity脚本编程时,出现手误时,vs会自动引用相关的命名空间,而有时这些多余的命名空间我们并没有使用到。

回到Editor话题上,在构建时出现Editor相关命名空间丢失报错的原因是:

在打包时,Unity默认不会将任何UnityEditor的内容打包,如果存在,将无法构建,出现报错。

解决方法:使用预编译指令(需要在游戏脚本中使用编辑器功能时)

对于需要使用编辑器功能的代码,只要确保游戏运行后对他没有用,可以使用 # if UnityEditor 和 # end if 将其包裹,被包裹的代码在打包时将会被忽视掉。

二.Editor脚本特殊属性

(这里特指使用UnityEditor命名空间的脚本)

1.仅限编辑器环境运行

Editor文件夹内的脚本(如继承自EditorWindowEditor的类)仅在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/EditorEditor文件夹,Unity会优先编译Plugins/Editor中的脚本。

本篇完~

相关推荐
虾球xz22 分钟前
游戏引擎学习第195天
c++·学习·游戏引擎
2501_906801483 小时前
BY组态-低代码web可视化组件
前端·物联网·低代码·数学建模·编辑器·web
周Echo周3 小时前
5、vim编辑和shell编程【超详细】
java·linux·c++·后端·编辑器·vim
hvinsion4 小时前
Unity启动画面去除教程:如何去除Unity的Splash Screen和水印
unity·游戏引擎
徐小夕@趣谈前端4 小时前
从零到一开发电子病历编辑器(源码+教程)
前端·javascript·vue.js·编辑器·ecmascript
虾球xz5 小时前
游戏引擎学习第193天
c++·学习·游戏引擎
Liudef066 小时前
deepseek v3 0324实现工作流编辑器
前端·css·编辑器·deepseek
txz20357 小时前
CMake在Windows环境下Visual Studio Code的使用
ide·vscode·编辑器
虾球xz8 小时前
游戏引擎学习第196天
c++·学习·游戏引擎
代码很单纯,复杂的是人。9 小时前
platfromIO(VScode)串口print输出中文乱码
ide·vscode·编辑器