Unity Coroutine 协程 (一)

首先,C#里function我们在调用的时候,是会在一帧中全部执行完。所以如果一个方法类似于这样

private void ScaleChangeFx() {
            float timeStart = Time.time;
            while (Mathf.Abs(Time.time-timeStart) <= scaleRecoverIntervalTime)
            {
                transform.localScale = Vector3.Lerp(transform.localScale, baseScale, (Time.time - timeStart) / scaleRecoverIntervalTime);
            }
        }

那么这个方法在你调用的时候就会在这一帧中反复循环,然后Unity就卡住了。(嗯,这时候就只能用任务管理器把Unity关闭了,别问我为啥知道)

那么问题来了,我们知道这样一个插值的功能需要使用协程这样的东西来实现,那么到底怎么实现呢。

IEnumerator ScaleChangeFx()
        {
            while (Mathf.Abs(Time.time - timeStart) <= scaleRecoverIntervalTime)
            {
                transform.localScale = Vector3.Lerp(transform.localScale, baseScale, (Time.time - timeStart) / scaleRecoverIntervalTime);
                yield return null;
            }
        }

这段代码中可以看到,ScaleChangeFx里面是一个wh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值