WebGL调用网页的js代码
官方文档 有两种情况,一种是JS代码在Unity的文件夹中,另外一种是在发布之后的webgl的Index.html中
注意事项_js代码在unity的文件夹中
- 将JS代码放到“Plugins”文件夹下,这个文件夹是Unity的特殊的文件夹
文件名.jslib
mergeInto(LibraryManager.library, {
Hello: function () {
window.alert("Hello, world!");
}
}
- 在脚本中添加引用
using UnityEngine;
using System.Runtime.InteropServices;
- 引用
[DllImport("__Internal")]
private static extern void Hello();
- 在需要的位置,就可以调用方法
void Start()
{
Hello();
}
这么直接写是会报错的,因为那个方法需要放到WebGL中去运行,所以在编辑器下需要使用宏命令,不让它执行
void Start()
{
#if !UNITY_EDITOR&&UNITY_WEBGL
Hello();
#endif
}
这样就不会报错了,报错的内容好像是:无法找到程序入口。
注意事项_Unity代码在WebGL的Index的文件夹中
- 这种方式需要在发布webGL之后将修改发布的Index文件
<script type="text/javascript">
function SayGoodBye(way)
{
window.alert(way);
}
</script>
- 在Unity中需要使用如下代码
[Obsolete]
public void SayGood(string content)//可以传递多个参数
{
Application.ExternalCall("SayGoodBye", content);//js的函数名,参数
}
这个是弃用的函数,可以去文档找新的函数替代,但是我不想找。
网页往WebGL传递参数
官方文档 网页的函数执行完毕后如何向WebGL传递参数呢? 方式1:
- 看Index的代码找到一个叫做“unityInstance”的东西,如果是Unity新版的应该在最下面大概在150行左右,在后面加上
UnityIns=unityInstance;
添加的位置
- 在index.html中的
<script> 标签的最上面有很多var 类型的变量,在这里写下
var UnityIns;
- 然后再
<head> 标签中添加,需要触发的条件,比如一个按钮点击,或者就写一个函数名
<head>
<script>
UnityIns.SendMessage('MyGameObject', 'MyFunction', 'MyString');
</script>
</head>
- 然后就会在一开始运行就去执行这个物体的对应方法。
Enjoy
不懂私信
|