Unity发布WebGL使用消息机制与协程配合的处理

36 篇文章 1 订阅
11 篇文章 0 订阅

        最近一个开发的一个内容是使用Unity发布WebGL的方式。

        有个要求是不要在Unity里面直接把UI做上去,而是使用页面上的按钮。我当时一想,这个简单,因为这种操作玩过太多次了,直接发消息就可以了,就像这样:

myGameInstance.SendMessage('InternalObj', 'SwitchStyle');

但是发现和在Unity里面直接点击按钮的效果有区别,本来通过原来的按钮点击之后,画面是有个渐变过程的切换效果,但是从页面上发消息的方式画面直接切换了,没了渐变过程,我就纳闷了,不管是按钮直接调用方法,还是发消息的方式,调用的是同一个方法,怎么就效果不一样了,于是我在网上查看了消息机制调用和直接调用的区别,说实在的,没找到说的太清楚的内容,大概好像是说“SendMessage会等消息处理完才返回”,不是很理解这个意思,不过由于我在被调用的方法里面使用了协程,类似下面这种:

	public void Switch()
	{
		StartCoroutine(SetTransition());
		StartCoroutine(DelaySwitch());
	}

        我想,是不是这个发送消息不适合协程机制呢?

        那就换个思路吧,发消息不直接调用方法,而是把方法放到队列里,然后在Update里检查执行,或者直接添加到事件里,执行完事件后,把事件清空。于是有了下面的写法。

	UnityAction msgAct = null;
	void Update()
	{
		if (msgAct != null)
		{
			msgAct.Invoke();
			msgAct = null;
		}
	}

	void SwitchStyle()
	{
		msgAct += switchStyle.Switch;
	}

        "void SwitchStyle()"这个方法是页面上的消息调用的,直接执行"switchStyle.Switch();"代码的话效果有问题,把"switchStyle.Switch"添加到事件里面,在Update里面执行的效果是对的。

        问题似乎是解决了,但是为什么呢?我也没想太清楚,期盼有路过的大神解惑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值