unity编程技术unity3D技术分享征服Unity3d

Jtro的技术分享:unity打包webgl的包和js数据通讯

2019-05-31  本文已影响1人  UnityPlane

首先要选择打包成wegl的包,然后在Asset文件夹中新建一个Plugins的文件夹,在此文件夹中再新建一个.jslib的文件,(可以使用notepad++新建文件),然后打开jslib文件,在里面写上如下代码:

mergeInto(LibraryManager.library, {

}

这样写就相当于在unity中新建了一个c#的脚本。具体要实现的方法,需要在里面进行写代码。例如,我现在在里面新建一个有参函数:

这个函数的功能就是讲传入的参数通过alert弹窗显示出来
mergeInto(LibraryManager.library, {
 HelloString: function (str) {
        //这里使用Pointer_stringify方法转换unity传递过来的字符串
        window.alert(Pointer_stringify(str));
    } ,//如果是多个方法,要用逗号隔开。
}

然后回到unity的代码中,新建一个通讯的脚本:

using System.Runtime.InteropServices;
using UnityEngine;

public class callJSTest : MonoBehaviour {
 [DllImport("__Internal")]   //这个里面是2条下划线
    private static extern void HelloString(string str);

void Start() {
  HelloString("This is a string.");
}
}

然后开始打webgl的包,在webgl的index.html中写入你刚刚需要调用的代码:

    window.HelloString= function(map) {
      window.parent.postMessage(map)
    }

这个位置写在<scripts></scripts>中。然后打开浏览器调试模式,可以看到传入的信息。

另外:webgl打包的时候,在playersetting中 compression format选择broli模式
与enable exceptions中选择none,这样打出来的包占用空间会小。但是第一次打包的时间会变的很漫长。

上一篇下一篇

猜你喜欢

热点阅读