我在单个按钮的脚本的Update函数中用nextBtn表示切换的下一状态,用nowBtn表示当前的状态,切换时会执行BtnAddEvent()函数。
这种方法需要警惕当异步加载了此脚本所挂载的物体时,在异步加载的回调函数中使用nextBtn改变物体状态nowBtn时,由于异步加载未完成,该物体没有实例化出来,Update中的函数并不会执行。因此在异步加载的过程中该按钮的nowBtn会为默认值,直到其被实例化出来Update执行后才会被修改为其他状态。
二图中会根据nowBtn按钮的状态将按钮的变量设置为不同的值和引用,该按钮的脚本有如下三图方法进行显示信息的赋值。
在下图我的存档和读档界面加载中,此处本希望将加载出的按钮更改状态(调用ChangeButtonType函数)后,再调用Init函数进行显示信息的赋值。但由于此时Update没有执行,因此按钮的状态依然为预制体默认的Save状态,导致需要赋值的信息变量实际为Save状态下的信息变量,因此没有达成希望的效果。
最终解决:在btn的BtnAddEvent()函数尾部再执行一次Init函数,当update函数执行时,执行了BtnAddEvent()函数后重新执行一次Init函数进行一次显示信息的赋值即可。
【Unity游戏开发学习杂疑】使用Update检测状态变化与异步加载导致赋值变量不正确。
于 2024-06-24 20:05:18 首次发布