javascript - 将脚本添加到 HTML 中的 assetbundle

标签 javascript unity-game-engine assetbundle

我正在开发一个项目,该项目使用 Unity WebGL 以 3D 方式显示不同的机器/零件/..,这些零件或机器由用户选择,然后加载到场景中(目前只有一个场景) ,但我们可能也想动态加载场景)。

由于选择较多,我们希望创建不同的资源包,每个资源包包含 1 个或多个部分,以便我们可以按需下载这些资源。

我通过将 URL 传递给 LoadFromCacheOrDownload 并从 www 对象中提取游戏对象,成功完成了此操作。

现在我们还希望将脚本包含在 Assets 中以创建动画和用户交互。我按照这里给出的解释:docs.unity3d link ,并且这在网络播放器中完美运行。然而最终的要求是 WebGL,为 WebGL 构建的相同代码会出现以下错误:

NotSupportedException: /Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/icalls/mscorlib/System/AppDomain.cpp(184) : Unsupported internal call for IL2CPP:AppDomain::LoadAssemblyRaw - "This icall is not supported by il2cpp." System.AppDomain.LoadAssemblyRaw (System.Byte[] rawAssembly, System.Byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence, Boolean refonly) System.AppDomain.Load (System.Byte[] rawAssembly, System.Byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence, Boolean refonly) System.AppDomain.Load (System.Byte[] rawAssembly, System.Byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence) System.AppDomain.Load (System.Byte[] rawAssembly) System.Reflection.Assembly.Load (System.Byte[] rawAssembly) API+c__Iterator0.MoveNext ()

它似乎源于调用 System.Reflection.Assembly.Load(txt.bytes); (我从示例中得到的),所以我认为 Reflection 类还不是(还? )完全支持 WebGL。我似乎找不到任何关于此的文档。

有没有办法使用反射来解决这个问题?最好的情况是我希望有一些不同的代码可以解决这个问题,最坏的情况是我们必须在 Javascript 中为 WebGL 创建脚本并将它们添加为这样的脚本而不是二进制文件?我在这里有点迷失所以任何线索不胜感激。

(交叉发布自 answers.unity3d )

最佳答案

不,没有办法通过反射来绕过这个限制。

在这种情况下,Web 播放器和 Unity 中的 WebGL 构建目标之间的主要区别在于 WebGL 使用 AOT(提前)编译,而 Web 播放器使用 JIT(即时)编译。通过 AOT 编译,不可能在运行时加载编译时不存在的程序集。

当然,可以在运行时加载 JavaScript 代码,因此按照您的建议,您可能需要走这条路线。

关于javascript - 将脚本添加到 HTML 中的 assetbundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569346/

相关文章:

iOS Unity Asset Bundle 下载限制 - 粒子效果、动画和动画资源

unity3d - Unity WebGL Assets 包内存未释放

javascript - 如何在 Yii2 Asset Bundle 中使用 JSX 文件

javascript - 可以使用 jest.mock 模拟 .env 文件吗?

javascript - 使用纯 JavaScript 在滚动上粘性 div

javascript - jquery/javascript 重新定义函数

unity-game-engine - Texture2D 转 base64 - Unity3d Web 播放器

c - 如何用C语言集成语音到字符串检测器

javascript - ajax Jquery后无法获取隐藏字段的值

yii2 - 无法使用assets/registerCss函数注册css/js