如何在 Blazor 的 Unity 中打开为 WebGL 编译的游戏?

问题描述

我创建了一个 Blazor 服务器项目。在其中,我想将我在 Unity3d 中创建的 WebGL 游戏放在一个单独的页面上。最后,按照例子做了所有的事情后,我仍然无法让它工作。虽然,我认为,所有的事情都考虑到了,但我看到来自 WebGL 游戏的代码标记 index.html 与其他示例不同,我还没有找到一行代码

unityInstance = UnityLoader.instantiate("unityContainer","unity/WebGL/Build/WebGL.loader.js",{ onProgress: UnityProgress });

我想我是正确的:

<script src="~/unity/WebGL/Build/WebGL.loader.js"></script>
@*<script src="~/unity/WebGL/Build/WebGL.framework.js.gz"></script>*@
<script src="~/unity/WebGL/run.js"></script>

我相信我写的 mime 类型是正确的:

var provider = new FileExtensionContentTypeProvider();

provider.Mappings.Remove(".data.gz");
provider.Mappings[".data.gz"] = "application/octet-stream";
provider.Mappings.Remove(".wasm.gz");
provider.Mappings[".wasm.gz"] = "application/wasm";
provider.Mappings.Remove(".js.gz");
provider.Mappings[".js.gz"] = "application/javascript";
provider.Mappings.Remove(".symbols.json.gz");
provider.Mappings[".symbols.json.gz"] = "application/octet-stream";
app.UseStaticFiles(new StaticFileOptions 
{
    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),"wwwroot","unity","WebGL","Build")),RequestPath = "/Build",ContentTypeProvider = provider 
});
app.UseStaticFiles();    

JavaScript 控制台中的错误如下:

UnityLoader 未定义

如果有兴趣,这是我的整个项目:

https://github.com/EgorPavlovich/FPS.Servers.Test

enter image description here

enter image description here

解决方法

我不得不使用游戏构建中的 index.html 文件