首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >团结5 WebGL:与来自C#的外部javascript通信

问团结5 WebGL:与来自C#的外部javascript通信
EN

Stack Overflow用户
提问于 2016-09-20 08:59:27
回答 1查看 5.1K关注 0票数 0

我正在尝试获得一个与SCORM1.2集成的Unifie5 WebGL项目。这涉及到与一些外部javascript通信的构建。

我发现这一页:

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html

...which建议将外部js放在资产/Plugins/WebGL文件夹中,并将文件保存为.jslib文件。下面是我的临时SCORM.jslib文件的外观:

代码语言:javascript
复制
var SCORM = {
    Hello: function()
    {
        window.alert("Hello, world!");
        console.log("Hello function in SCORM.jslib has been called.");
    }
}

然后,在附加到我的C#触发器(多维数据集)的gameObject脚本中:

代码语言:javascript
复制
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;

public class CompletionTrigger : MonoBehaviour {    

    [DllImport("__Internal")]
    private static extern void Hello();

    void Start () {

        Hello();

    }    

    void Update () {

    }
}

问题是,在调用'Hello()‘的行中,我得到了一个'EntryPointNotFoundException’错误。

我在这里搜索和搜索过,但答案似乎与开发C++ dll或RoR有关。

有人知道是什么导致了这个错误吗?谢谢。

编辑

我在另一个页面上看到一条评论,其中说错误只出现在编辑器中,所以我想我应该再次运行一个WebGL构建。我得到以下错误:

代码语言:javascript
复制
Failed running "C:\Program Files\Unity\Editor\Data\PlaybackEngines\WebGLSupport/BuildTools/Emscripten_Win/python/2.7.5.3_64bit/python.exe" "C:\Program Files\Unity\Editor\Data\PlaybackEngines\WebGLSupport/BuildTools/Emscripten/emcc" @"D:/Projects/Unity 3D/Packaging Test/Assets/../Temp/emcc_arguments.resp"
stdout:
WARNING: sanity check failed to run [Errno 13] Permission denied: 'C:\\Program Files\\Unity\\Editor\\Data\\PlaybackEngines\\WebGLSupport/BuildTools/emscripten.config_sanity'
stderr:
WARNING  root: did not see a source tree above or next to the LLVM root directory (guessing based on directory of C:\Program Files\Unity\Editor\Data\PlaybackEngines\WebGLSupport/BuildTools/Emscripten_FastComp_Win\llc), could not verify version numbers match
INFO     root: (Emscripten: Running sanity checks)
WARNING  root: java does not seem to exist, required for closure compiler, which is optional (define JAVA in ~/.emscripten if you want it)
error: failure to execute js library "D:\Projects\Unity 3D\Packaging Test\Assets\Plugins\WebGL\SCORM.jslib": ReferenceError: window is not defined,,ReferenceError: window is not defined

错误消息持续了一段时间,但我在这里包含的最后一行似乎表明编译器不知道如何处理“窗口”,说它没有定义。里面还提到了“精神健康检查”,这似乎很贴切。

再一次,如果有人有任何指示,这将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 11:00:46

如果有人有同样的问题,我设法避开了这个问题:

我使用了统一手册页面上的第一个选项,所以现在我的SCORM.js文件被加载到index.html WebGL模板中。

(要制作自定义WebGL模板,请在“资产”文件夹中创建“WebGLTemplates”文件夹。资产/模板中包含index.html文件的任何文件夹都将作为模板出现在编辑>项目设置>播放器检查面板中)。

所以,加上..。

代码语言:javascript
复制
<script src="js/SCORM.js"></script>

...to my index.html并将SCORM.js放在一个名为'js‘的文件夹中--与最终构建的index.html文件相邻,我现在可以从C#调用SCORM.js函数,如下所示:

代码语言:javascript
复制
Application.ExternalCall("initialiseSCORM", "This could specify an id");

下一步将是从SCORM.js获取SCORM信息,但正如该页面所建议的,我应该能够使用:

代码语言:javascript
复制
SendMessage ('MyGameObject', 'MyFunction', 'foobar');

...in SCORM.js将信息传递到统一游戏中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39589800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档