【Unity游戏开发学习杂疑】使用Update检测状态变化与异步加载导致赋值变量不正确。

我在单个按钮的脚本的Update函数中用nextBtn表示切换的下一状态,用nowBtn表示当前的状态,切换时会执行BtnAddEvent()函数。




这种方法需要警惕当异步加载了此脚本所挂载的物体时,在异步加载的回调函数中使用nextBtn改变物体状态nowBtn时,由于异步加载未完成,该物体没有实例化出来,Update中的函数并不会执行。因此在异步加载的过程中该按钮的nowBtn会为默认值,直到其被实例化出来Update执行后才会被修改为其他状态。

二图中会根据nowBtn按钮的状态将按钮的变量设置为不同的值和引用,该按钮的脚本有如下三图方法进行显示信息的赋值。


在下图我的存档和读档界面加载中,此处本希望将加载出的按钮更改状态(调用ChangeButtonType函数)后,再调用Init函数进行显示信息的赋值。但由于此时Update没有执行,因此按钮的状态依然为预制体默认的Save状态,导致需要赋值的信息变量实际为Save状态下的信息变量,因此没有达成希望的效果。


最终解决:在btn的BtnAddEvent()函数尾部再执行一次Init函数,当update函数执行时,执行了BtnAddEvent()函数后重新执行一次Init函数进行一次显示信息的赋值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值