unity3d – 如何将MonoBehaviour移动到外部程序集并且不会卡在“Missing(mono script)”中?

我在Unity3D的游戏项目中有很多脚本(MonoBehaviour),其中许多脚本在我的场景中被gameObjects引用.

现在我想将其中一些脚本移动到一个单独的程序集(类库),因为我们需要在其他项目中使用它们,我们希望改进我们的代码组织.

因此,当我将脚本移动到此外部类库项目并将.dll放入Unity3D资源文件夹中时,所有引用移动脚本的游戏对象都会警告“Missing(mono script)”.

我想Unity3D会按脚本名称和程序集名称跟踪脚本引用.

有谁知道解决这个问题的方法?

最佳答案 不幸的是,在Unity中没有自动执行此操作的方法.你是对的,因为Unity保留了对MonoBehaviour的引用.你有几个选择,没有一个是理想的:

选项1:将当前项目中的MonoBehavi重命名为“MB_XXX”,其中XXX是脚本的名称.通过Unity编辑器执行此操作,Unity将保留该参考.然后将包含MonoBehaviours的已编译DLL与您实际想要使用的名称一起导入.遍历每个对象,从DLL中添加适当的MonoBehaviour并删除MB_XXX行为.使用资产商店中的某个Unity资产将数据从一个MonoBehaviour复制到另一个MonoBehaviour,这样您就不必重新输入设置.

选项2:创建一个shell脚本,该脚本将更改资产中的引用ID(将文本格式的资源保存)从当前使用的MonoBehaviour更改为DLL中的引用ID.幸运的是,Unity允许您拥有相同名称的MonoBehaviours,至少在您尝试运行游戏之前.您需要获取DLL中每个MonoBehaviours的引用ID – 您可以通过将DLL中的所有MonoBehaviours添加到空GameObject,然后查看生成的资产文件以查看引用ID是什么来实现此目的. .

不幸的是,这些并不是理想的解决方案,您只需要将它放在一边.

点赞