4

我们有一个包含我们所有代码的visualstudio解决方案,它与我们的统一项目完全分离。当我们从 visualstudio 中将代码构建到 dll 中时,该 dll 被复制到统一项目的插件文件夹中,因此我们可以在统一项目中使用其中的类。

这一切都很好,但问题是当我们在我们的视觉工作室解决方案中重命名一个类,重建 dll 并返回统一项目时,对重命名类的引用在我们的场景和/或预制中丢失了......

我查看了场景和预制文件,注意到对 dll 中类的引用定义如下:

m_Script:{fileID:698634159,guid:aa20b9c3579870b40bb96d13672546a3,类型:3}

我在论坛上读到,fileID 是根据类文件的名称空间和名称生成的,所以从逻辑上讲,当类重命名时,这个 fileID 会发生变化,unity 不知道它需要引用重命名的类。

有没有办法定义某种硬引用,所以重命名类时引用不会丢失?或任何其他建议,以防止参考丢失。

我也尝试在 dll 中包含一个带有 guid 的元文件,但统一似乎没有考虑这个元文件,因为它总是使用 dll 的 guid 和生成的 fileId。

4

2 回答 2

1

Unity 无法自动发现您已重命名 DLL 中的某些类。对于任何形式的项目都是如此:如果您依赖于某个 DLL,并且 DLL 中的类发生了变化,则没有重命名的迹象。

链接它们的最佳方法是在解决方案中添加您的 Unity 项目,并在 Unity 项目和另一个项目之间建立依赖关系。然后也许重构工具会建议您在 Unity 项目中重命名。

于 2015-04-23T12:09:14.223 回答
0

这是一个非常好的工具来查找和替换丢失的脚本,我认为这是您遇到的错误。

http://daikonforge.com/forums/resources/fix-missing-scripts.3/

解压 Unity3d 包后,它会附带源代码,因此您可以根据需要对其进行自定义。

于 2015-05-15T15:05:42.693 回答