网页传递参数到Unity WebGL ,WebGL传递参数到网页

WebGL调用网页的js代码

官方文档
有两种情况,一种是JS代码在Unity的文件夹中,另外一种是在发布之后的webgl的Index.html中

注意事项_js代码在unity的文件夹中

  1. 将JS代码放到“Plugins”文件夹下,这个文件夹是Unity的特殊的文件夹
    文件名.jslib
mergeInto(LibraryManager.library, {

  Hello: function () {
    window.alert("Hello, world!");
	}
  }
  1. 在脚本中添加引用
 using UnityEngine;
 using System.Runtime.InteropServices;
  1. 引用
	[DllImport("__Internal")]
    private static extern void Hello();
  1. 在需要的位置,就可以调用方法
void Start()
{
	Hello();
}

这么直接写是会报错的,因为那个方法需要放到WebGL中去运行,所以在编辑器下需要使用宏命令,不让它执行

void Start()
{
#if !UNITY_EDITOR&&UNITY_WEBGL
Hello();
#endif
}

这样就不会报错了,报错的内容好像是:无法找到程序入口。

注意事项_Unity代码在WebGL的Index的文件夹中

  1. 这种方式需要在发布webGL之后将修改发布的Index文件
<script type="text/javascript">
		function  SayGoodBye(way)
		{
			 window.alert(way);
		}
</script>
  1. 在Unity中需要使用如下代码

    [Obsolete]
    public void SayGood(string content)//可以传递多个参数
    {
        Application.ExternalCall("SayGoodBye", content);//js的函数名,参数
    }

这个是弃用的函数,可以去文档找新的函数替代,但是我不想找。

网页往WebGL传递参数

官方文档
网页的函数执行完毕后如何向WebGL传递参数呢?
方式1:

  1. 看Index的代码找到一个叫做“unityInstance”的东西,如果是Unity新版(Unity2021)的应该在最下面大概在150行左右,在后面加上
 UnityIns=unityInstance;

添加的位置
网页传递参数到Unity WebGL ,WebGL传递参数到网页_第1张图片

  1. 在index.html中的

你可能感兴趣的:(webgl,Unity,浏览器)