统一调用函数会导致统一崩溃 - javascript

我想从vue网站调用统一的webgl函数,为此,我使用以下javascript / vue代码:

            var data = Unity3dViewer.data();
            data.gameInstance.SendMessage("BrowserCommunication", "GetAllLightsJson");

同时,事物统一方面的脚本如下所示:

    public void GetAllLightsJson()
        var lights = GameObject.FindObjectsOfType<LightController>();
        string json = "[";
        foreach (var light in lights) {
            Vector3 loc = light.transform.position;
            json = json + "{ 'location' : {'x': " + loc.x * 0.3048 + ",'z': " + loc.y * 0.3048 + ",'y': " + loc.z * 0.3048 + "}," + "'normal' : {'x':0,'y':0,'z':-1} },";
        }
        json = json.Remove(json.Length - 1);
        json = json + "]";
  }

现在,由于某些原因,这会导致错误:

An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:
TypeError: self.performance is undefined

控制台显示以下详细信息:

exception thrown: TypeError: self.performance is undefined,_emscripten_get_now@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:350525
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[7069]:0x382dd2
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[7068]:0x382b8b
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[9262]:0x471c95
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[8647]:0x429614
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[8647]:0x42962b
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[8642]:0x428840
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[8636]:0x42707e
@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4 line 2 > WebAssembly.instantiate:wasm-function[99461]:0x29daf84
UnityLoader.db99c972aa57aeb012a876572a3f4cf4/Module.dynCall_v@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:519017
browserIterationFunc@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:131846
runIter@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:134938
Browser_mainLoop_runner@blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:133383
UnityLoader.js:4:10740
printErr
http://localhost:50922/dist/Viewer/Build/UnityLoader.js:4:10740
runIter
blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:135029
Browser_mainLoop_runner
blob:http://localhost:50922/62fd591f-d987-4bcf-aff1-9ae5cb3530d4:2:133383

并整体崩溃(网络播放器无响应)。
有人知道此错误的含义以及如何解决吗?

参考方案

虽然,看来您正在尝试访问超出范围的内容或未正确初始化的内容。因此
self.performance is undefined尝试完全跟踪呼叫的去向。另外,以下是Unity3D网站的摘录:

  代码可见性
  从Unity 5.6开始,所有构建代码都在其自己的范围内执行。这种方法可以将您的游戏嵌入到任意页面上,而不会引起与嵌入页面代码的冲突,并且可以在同一页面上嵌入多个版本。
  
  如果您在项目中以.jslib插件的形式拥有所有JavaScript代码,则此JavaScript代码将在与编译后的版本相同的范围内运行,并且您的代码应与Unity的早期版本中的工作方式几乎相同(对于例如,以下对象和功能应从JavaScript插件代码中直接可见:Module,SendMessage,HEAP8,ccall等)。
  
  但是,如果您打算从嵌入页面的全局范围调用内部JavaScript函数,则应始终假定页面上嵌入了多个内部版本,因​​此您应明确指定要引用的内部版本。例如,如果您的游戏已被实例化为:
  
  var gameInstance = UnityLoader.instantiate("gameContainer", "Build/build.json", {onProgress: UnityProgress});
  
  然后,您可以使用gameInstance.SendMessage()将消息发送到构建,或使用gameInstance.Module访问构建模块对象。

进一步了解的唯一方法是查看整个脚本。此外,进行调用的脚本是否嵌入在您的项目中。希望这会有所帮助。

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

Javascript-Urls的奇怪字符串比较行为 - javascript

最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com‏/&#…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

从控制器以视图(javascript)访问会话 - javascript

这是我的控制器代码。我想获取视图中存储在会话中的值(JavaScript代码) decimal.TryParse(permotion.PROMOTION_AMOUNT.ToString(), out promotionAmount); int.TryParse(permotion.PROMOTION_TYPE_ID.ToString(CultureInfo.…