unity与webGL的交互

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

web端调用unity的方法:

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

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

	public void webMessageCSharp(){

		obj.GetComponent<Renderer> ().material.color = Color.blue;

	}

另一个使用JS创建

var target:GameObject; 

function webMessageJS(){

 target.GetComponent.<Renderer>().material.color=Color.red;   

}

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

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

    <script>
      var gameInstance = UnityLoader.instantiate("gameContainer", "Build/test.json", {onProgress: UnityProgress});
    </script>

通过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!







  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值