当我构建 Unity 应用程序时,我注意到当我使用开发人员模式时,我收到一个名为“无法生成 id 362 的类”的错误。当我使用我创建的脚本删除某个对象时,错误消失了。我不知道是什么产生了这个错误或如何修复它。
以下是部分答案。首先,是我在撰写本文时发现的一些有用的研究:
\n在某些构建配置下,无论是使用 IL2CPP 还是在 WebGL 中使用引擎剥离,Unity 都会积极地剥离组件以减少构建大小。
\nUnity 过于激进可能会导致一个潜在错误could not produce class with id xyz。
WebGL 平台文档指出:
\n\n\n代码剥离问题
\n如果代码剥离实际上是必要的,则代码剥离可能会导致项目出现问题。\n 当您在运行时加载\nAssetBundles 时,可能会出现这种情况,其中包含主构建中未包含的\n类,因此已从项目中删除。\n错误消息出现在浏览器\xe2\x80\x99s JavaScript 控制台中当发生这种情况时(可能会出现更多错误)。例如:
\nRun Code Online (Sandbox Code Playgroud)\nCould not produce class with ID XXX\n。。。
\n如果您怀疑剥离导致构建出现问题,您还可以尝试在测试期间禁用“剥离引擎代码”选项。
\n
来自PlayerSettings.stripEngineCode文档
\n\n从构建中删除未使用的引擎代码(仅限 IL2CPP)。
\n如果启用此功能,则 Unity 引擎\n代码库中未使用的模块和类将在 IL2CPP 版本中删除。这将导致较小的\n二进制大小。建议使用此设置,但是,如果您怀疑这会导致项目出现问题,\n您可能需要禁用它。请注意,IL2CPP 脚本后端始终启用托管程序集的字节代码剥离。
\n
在 WebGL 平台文档中,有这样的建议来解决一般问题。即使您的问题似乎不是由 WebGL 或 IL2CPP 剥离引起的,但这可能会对您有所帮助:
\n\n\n\n
XXX要解决这些错误,请在“类 ID 参考”中查找 ID(例如上面的示例) ,以了解它正在尝试创建哪个类的实例。在这种情况下,您可以强制 Unity 在构建中包含该类的代码,方法是在脚本或场景中添加对该类的引用,或者添加link.xml在项目中下面是一个示例,它确保 Collider 类(以及\n物理模块)保留在项目中。将此 XML 代码添加到名为link.xml的文件中,然后将该文件放入您的 Assets 文件夹中。
\nRun Code Online (Sandbox Code Playgroud)\n<linker>\n <assembly fullname="UnityEngine">\n <type fullname="UnityEngine.Collider" preserve="all"/>\n </assembly>\n</linker>\n
| 归档时间: |
|
| 查看次数: |
5467 次 |
| 最近记录: |