美文网首页unity编程技术unity3D技术分享征服Unity3d
Jtro的技术分享:unity打包webgl的包和js数据通讯

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

作者: UnityPlane | 来源:发表于2019-05-31 09:48 被阅读1次

    首先要选择打包成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,这样打出来的包占用空间会小。但是第一次打包的时间会变的很漫长。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/xcgitctx.html