我在Unity3D的游戏项目中有很多脚本(MonoBehaviour),其中很多都是在我的场景中被gameObjects引用。
现在我想将其中一些脚本移到一个单独的程序集(类库)中,因为我们需要在其他项目中使用它们,我们希望改进我们的代码组织。
因此,当我将脚本移动到此外部类库项目并将.dll放入Unity3D资源文件夹中时,所有引用移动脚本的游戏对象都会警告“Missing(mono script)”。
我想Unity3D会按脚本名称和程序集名称跟踪脚本引用。
有谁知道解决这个问题的方法?
答案 0 :(得分:2)
不幸的是,在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是什么来实现此目的。
不幸的是,这些并不是理想的解决方案,你只需要抓住它。