Unity2018新版Webgl和网页通信 基于jslib的Unity和网页中的方法互相调用

Application.ExternalCall()改版弃用 新版jslib官方介绍
首先我们来一个最简单的jslib,用txt创建文件。文件名为__Internalplugins,后缀名为jslib。
关键操作:这个文件必须放在Unity项目的Plugins文件夹下!
代码如下:

mergeInto(LibraryManager.library, {

  Hello: function () {
    TestSend("Hello, world!");
  },
});

接下来我们创建c#测试代码,把脚本挂在指定的GameObject上。

using UnityEngine;
using UnityEngine.UI;
using System.Runtime.InteropServices;

public class WebCommunication : MonoBehaviour
{
//引用jslib的Hello()方法
    [DllImport("__Internal")]
    private static extern void Hello();
//测试UI,我们的目的是用jslib的Hello()方法调用网页的js方法。然后用js方法调用Unity方法。
//这样就完成了Unity和网页中的方法互相调用。最后MyText会显示Hello, world!
    public Text MyText;

    void Start()
    {
        //我们程序一开始就调用jslib的方法Hello()
        Hello();
    }
    //测试 网页调用此方法
    public void TestMethod(string text) {
        MyText.text = text;
    }
}

好准备工作完成后,我们就可以发布WebGL了!
发布后我们会得到3个文件夹和一个index.html。最后的代码设置来了。
我们给js添加一个TestSend(s)方法,通过.SendMessage()方法调用Unity的TestMethod()方法。
"Scripts"参数就是上面我们指定的把脚本挂在指定的GameObject上。GameObject的名字。

function TestSend(s){
		gameInstance.SendMessage("Scripts","TestMethod",s);
	  }

index代码全文如:



  
    
    
    Unity WebGL Player | XXX
    
    
    
    
    
  
  
    

总结:现在新版Unity弃用了Application.ExternalCall(),加了个jslib当中介。Unity必须通过
jslib来调用网页的js方法。然而js还是通过.SendMessage()调用Unity方法!
整个流程:unity c#里面Start方法调用-- jslib的Hello()方法调用–网页的js TestSend()方法–最后通过.SendMessage()调用Unity方法。实现Unity和网页中的方法互相调用。
最后我被自己绕晕了,反正测试成功!

你可能感兴趣的:(我的第一篇CSDN博文)