unity场景切换的一个问题与解决
背景:假设场景一中有三个物体A,B,C,其中B、C是Button,给B和C在hierarchy面板添加onclick函数,分别为挂载在A上的脚本ButtonManager上的函数onButton_B_click()和onButton_C_click(),由于某些原因,需要A物体在场景切换时不销毁,并且当切回场景一时,此时会有两个A物体的存在,删除场景默认的那个A,保留一直没有销毁的A。
这样当我们回到场景一时,会发现点击B、C按钮没有任何效果,B、C上对应的响应函数变成了miss。
这是因为B、C是和原有的A上的脚本中的对应函数绑定,现在原有场景的A销毁了,保留的是一直没有销毁的A,所有会出现点击按钮无效的现象
解决办法:
不在hierarchy面板添加按钮响应函数,而是在脚本中添加。
在按钮B上挂载一个脚本,在start()中:
void start()
{
GameObject A = GameObject.Find("A");
ButtonManager buttonManager = A.GetComponent<ButtonManager>();
this.GetComponent<Button>().onClick.AddListener(buttonManager.onButton_B_click);
}
同样的,在C上也可以挂载这样的一个脚本,把对应的响应函数修改一下即可
这样回到场景一时,B、C两个按钮就绑定上了A中的函数。