如何实现仅激活选中的GameObject,禁用其余所有GameObject?
翻书功能实现优化方案
你的需求是点击书页时仅保留当前选中的GameObject激活,其余全部禁用,现有代码逻辑可行,但可以简化写法、去除冗余操作,以下是优化方案:
现有代码可优化点
pageFlu方法中,调用whatPage()后重复执行bookPages[currentPage].SetActive(true)属于冗余操作,因为whatPage()内已经完成了当前页的激活逻辑。while循环的写法可以替换为更简洁直观的for循环,提升代码可读性。
优化后的代码
public GameObject[] bookPages; int currentPage; // 统一处理页面显示逻辑 public void ShowCurrentPage() { for (int i = 0; i < bookPages.Length; i++) { // 仅当前页保持激活,其余页禁用 bookPages[i].SetActive(i == currentPage); } } // 示例:点击后切换到指定页码(索引从0开始,currentPage=1对应第二页) public void OnPageClick() { currentPage = 1; ShowCurrentPage(); }
扩展说明
如果需要支持点击不同书页动态切换页码,可以给每个书页的点击事件绑定带索引参数的方法,直接传递当前页的索引:
// 给每个书页的点击事件绑定此方法,传入对应页的索引 public void OnPageClicked(int pageIndex) { currentPage = pageIndex; ShowCurrentPage(); }
内容的提问来源于stack exchange,提问作者Nicole Erasga
相关产品推荐
相关产品推荐

