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中的脚本。

本篇完~

相关推荐
工藤新一¹4 小时前
C++/SDL进阶游戏开发 —— 双人塔防游戏(代号:村庄保卫战 13)
c++·游戏·游戏引擎·毕业设计·sdl·c++游戏开发·渲染库
虾球xz6 小时前
游戏引擎学习第247天:简化DEBUG_VALUE
c++·学习·游戏引擎
爱学习的章鱼哥7 小时前
如何实现一个可视化的文字编辑器(C语言版)?
c语言·编辑器·文本编辑器·程序设计·easyx
小赖同学啊8 小时前
Unity 和 Unreal Engine(UE) 两大主流游戏引擎的核心使用方法
unity·游戏引擎·虚幻
苏克贝塔9 小时前
2025 VSCode中如何进行dotnet开发环境配置完整教程
ide·vscode·编辑器
工藤新一¹9 小时前
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 14)
开发语言·c++·游戏引擎·游戏开发·sdl·实践项目
AgilityBaby9 小时前
unity Animation学习,精准控制模型动画播放
学习·3d·unity·游戏引擎
小赖同学啊9 小时前
Unreal Engine 实现智慧水库周边环境以及智慧社区模拟的实例
人工智能·游戏引擎·虚幻
EQ-雪梨蛋花汤10 小时前
【Flutter】Unity 三端封装方案:Android / iOS / Web
android·flutter·unity
虾球xz11 小时前
游戏引擎学习第248天:清理数据块显示
c++·学习·游戏引擎