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

源码与发布工程:

https://download.csdn.net/download/GoodCooking/89311236

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;

添加的位置
在这里插入图片描述

  1. 在index.html中的 <script> 标签的最上面有很多var类型的变量,在这里写下
var  UnityIns;

在这里插入图片描述

  1. 然后再<head>标签中添加,需要触发的条件,比如一个按钮点击,或者就写一个函数名
  <head>
  <script>
	UnityIns.SendMessage('MyGameObject', 'MyFunction', 'MyString');
	// MyGameObject必须一开始就存在,游戏物体的名称直接在场景之下,无父对象,MyFunction这个物体挂在的脚本的方法名称,需要使用public,mystring传递的参数, 
	</script>
  </head>
  1. 然后就会在一开始运行就去执行这个物体的对应方法。

Enjoy

不懂私信
在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值