Unity编辑器笔记

本文解决Unity中PrefabUtility使用引发的错误及游戏脚本中引入UnityEditor命名空间导致的问题,并提及动画状态机显示异常的情况。

编辑器界面

场景相机Scene Camera

场景相机看到了模型内部

原因:场景相机设置里开启了动态剪裁Dynamic Clipping并且使用滑轮缩小太多了。

解决方法:要么关闭Dynamic Clipping,要么向前滑滑轮放大。相机进退时按住右键按w、s,别用滑轮。

透视、正交视图切换

这里三条线发散为透视试图,平行为正交视图。

Tool Handle

Tool Handle Position选Pivot时,一个物体坐标轴图标在它的模型原点。

Tool Handle Position选Center时:一个物体有子物体时,该物体的坐标轴图标不是在它的原点位置,而是根据它和它的子物体做某种加权平均算出来的位置。如果一个物体是空物体,它在它的坐标轴图标位置的加权平均中没有权重,坐标轴显示的位置是由它的子物体共同决定的。如果它只有一个子物体,则它的坐标轴图标在它的子物体处。

Global/Local选择这个坐标轴和世界坐标轴还是和对象的局部坐标轴一致。

Gizmos

Scene视图各种图标的显示开关。

Package Manager

打开Package Manager报错Error searching for packages

原因:这里没检测到登录:

解决方法:点Sign in,浏览器弹出一个网页:

并且浏览器请求打开Unity Hub,打开:

然后那里变成用户名:

再打开Package Manager.

Animator

动画状态机显示不出来

一点Animator窗口就报错:

这两个现象应该有关系。解决方法:

打开后如果看不到状态。按F把默认状态聚焦到中心。

其他

Builtin RP和URP项目的区别

内置RP:Scriptable Render Pipeline Settings是空。

URP:

此外相机的检查器也不一样。

预制体Unpack和Unpack Completely的区别

区别在于如果是包含预制体的预制体,Unpack Completely会把包含的预制体也Unpack,而Unpack只对这一层。

Unpack:

Unpack completely:

项目文件夹

一个14.1G的项目,Assets有3.56G,Library有11G,打开Library,最大的是Artifacts有4.06G,以及Bee有4.74G.

项目文件夹的Library/Artifacts是啥

Unity项目中的Library/Artifacts文件夹属于Library目录的子目录,主要用于存储Unity在资源导入和编译过程中生成的中间产物。具体功能如下:

编译缓存与中间文件‌
该目录保存了Unity将脚本编译为DLL文件时生成的中间数据,包括编译器输出的临时文件、符号表等,用于加速后续编译过程。

资源导入的衍生数据‌
当Unity导入外部资源(如纹理、模型)时,会将其转换为引擎可识别的格式,这些处理后的二进制数据可能存储在Artifacts中,而非直接使用原始文件。

自动生成与维护‌
Library及其子目录(含Artifacts)均由Unity自动管理,开发者通常无需手动操作。删除后重新打开项目会重新生成,但可能导致首次导入或编译时间延长。

版本控制排除建议‌
由于内容可自动重建且体积较大,该目录一般不应提交到版本控制系统(如Git)中。

项目文件夹的Library/Bee是啥

Unity项目中的Library/Bee是Unity构建系统(Bee Build System)的工作目录,主要用于存储编译和构建过程中生成的中间文件及缓存数据。其核心功能包括:

增量编译支持‌
该目录保存了脚本编译(如C#转DLL)和资源处理的中间产物,通过缓存机制加速后续构建过程,避免重复计算。

构建系统核心文件‌
Bee是Unity内部采用的构建工具链,负责管理依赖关系、并行任务调度和平台特定构建逻辑(如Android/iOS的IL2CPP编译)。

问题排查与清理‌
当构建失败时,可尝试删除Library/Bee目录以强制重建缓存,解决因文件损坏或版本冲突导致的错误(如IL2CPP编译失败或Gradle冲突)。

版本控制排除建议‌
与整个Library文件夹一样,Bee目录内容可自动生成,不应提交到版本控制系统(如Git)中。

一个空项目的大小

鼠标放上去是414M,打开属性是800多M(?),Library鼠标放上去是509M,属性是800多M。

Artifacts是

Bee放上去是196M,属性是

何时应创建新项目?

学Unity涉及大量模块,学一个新模块应该创建新项目还是在已有项目里?创建新项目会耗费时间,更严重的是一个项目占空间经常超过1G。但是学各种模块都在一个项目里打包时大大增加报错的概率和复杂性。

基于这种情况,我想创建项目应该取决于是否有打包需求。对于没有打包需求的模块,可以在一个项目里学。如果需要打包,则应该新建项目,只包括需要的内容,以避免其他无关模块增加打包报错的概率和复杂性。

需要打包的项目需要明确:

  1. 渲染管线;
  2. 目标平台;
  3. 用到的模块(NGUI?xLua?FairyGUI?LitJson?);

尽量不包括任何多余模块,以在打包报错时尽量缩小报错的可能来源!

修改脚本后手动编译

手动重新编译:

报错

The name 'PrefabUtility' does not exist in the current context

脚本里用了PrefabUtility,build的时候报这个错。

PrefabUtility属于UnityEditor,我改成UnityEditor.PrefabUtility,报的错变成:

看教程,知道了在游戏脚本里使用任何UnityEditor命名空间的内容,都会导致打包失败。

Could not load ICU data. UErrorCode: 2

重启编辑器能解决。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值