【Unity】打包报错类型不存在于命名空间内

1 前言

        这里的打包准确来说是资源包,使用YooAsset进行打包资源时报了这个错误:error CS0234: The type or namespace name 'AssetModificationProcessor' does not exist in the namespace 'UnityEditor' (are you missing an assembly reference?)。本来是可以打包的,但我一顿程序集划分、引用后再打包就报错了。

2 问题

        查询相关资料后,发现似乎是Editor脚本的原因。具体什么原因我也不确定,可能是Editor单独划分程序集后在打包时无法识别?

3 解决

        解决方案也很简单,给Editor脚本加上宏判断即可:

//原来的脚本内容
using UnityEditor;
using ···
···

namespace ···
{
    ···
}

//加判断宏后
#if UNITY_EDITOR //若是编辑器状态
using UnityEditor;
using ···
···

namespace ···
{
    ···
}
#endif

        可以看到,我给整个脚本加了个编辑器状态判断的宏,这样可以理解为非编辑器状态下此脚本内容就不存在了。通常Runtime逻辑也不会去引用Editor逻辑,所以非编辑器状态下隐藏Editor脚本内容也不会出现引用错误。之后测试,打包成功。

4 后记

        核心在于屏蔽掉涉及到Editor的内容。我的方法较为粗暴,直接对整个脚本进行判断,实际也可以只对脚本中涉及到Editor的内容判断,保留不涉及的部分。当然,也要确保屏蔽掉涉及Editor的内容后不会造成保留的内容发生错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值