unity与webGL的交互

看了官方文档, 然后测试了一下unity和webGL之间的交互方法。

web端调用unity的方法:

首先在unity项目里写一个方法,例如给分别给两个个cube改颜色:

这里我是创建了两个方法,一个使用C#创建

	public void webMessageCSharp(){

		obj.GetComponent ().material.color = Color.blue;

	}

另一个使用JS创建

var target:GameObject; 

function webMessageJS(){

 target.GetComponent.().material.color=Color.red;   

}

然后导出项目,build为WebGL模式,这里好像应该导出为开发者模式,也就是选中Development Build,这样方便调用sendMessage方法

当然如果不导成开发者模式,我们也可以调用sendMessage方法,那就是在HTML里面添加

    

通过gameInstance方法调用。

导出项目后,打开index.html文件

设置按钮,添加响应事件

    	function r(){
            SendMessage("Main Camera","webMessageJS","");
    	    SendMessage("Main Camera","webMessageCSharp","");
    	}

运行后,当点击按钮后,一个cube变为蓝色,一个变为红色,交互成功。

关于sendMessage方法,是unity通用于iOS,Android,web的交互方法,参数一是脚本所挂物体的名称,参数二是脚本里面的方法名,参数三是传参。

unity调用web端的方法:

有两种方法,

第一种使用

Application.ExternalCall ();

官网给的介绍就是这样的

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    void Example()
    {
        // Calls MyFunction1 in the web page with no arguments
        Application.ExternalCall("MyFunction1");
        // Calls MyFunction2 in the web page with a string
        Application.ExternalCall("MyFunction2", "Hello from Unity!");
        // Calls MyFunction3 in the web page with several arguments of different types
        Application.ExternalCall("MyFunction3", "one", 2, 3.0F);
    }
}
然后在导出的html文档中写响应的方法就可以

function MyFunction3( arg )
{
    alert( arg );
}
这个方法 会不等网页执行结果而继续往下执行。

还有一个函数类似

Application.ExternalEval();可以参考官方文档使用

第二种方法就是使用类似于与iOS交互的方式

在unity中创建代码,

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

用按钮调用方法

	public void btn(){

		Hello ();

	}


然后创建一个后缀为.jslib类型的文件

文件内写

var MyPlugin = {
    Hello: function()
    {
        window.alert("Hello, world!");
    }
};

mergeInto(LibraryManager.library, MyPlugin);

这个文件要放在路径Assets/Plugins/WebGL/MyPlugin.jslib里,

导出后,按unity创建的按钮,会在网页弹出Hello, world!







你可能感兴趣的:(U3D)