上一篇博客我们已经有了相关的思路构思,同时已经完成了对于点击方法的编写以及按钮的创建,这次我们将实现切换物体并且完善这个功能
切换物体实现-2
脚本编写
在我们之前提到的窗户预制体file中加入一个脚本,命名为change_items
设定变量
public GameObject allitem;//所有item的父物体
public GameObject[] items;//用于存储展品的数组
public GameObject button_control;//按钮
int N=3;//展品总数
int num;//当前展品
int oldnum;//上一个展品
然后在Start方法中将变量初始化
void Start()
{
button_control=GameObject.Find("Button_click_manager").gameObject;
oldnum = 0;
num = 0;
//N = allitem.transform.childCount;
items = new GameObject[N];
for(int i=0;i< allitem.transform.childCount; i++)
{
items[i] = allitem.transform.GetChild(i).gameObject;
}
}
这里我使用的方法是在unity中对刚刚提到的allitem变量进行赋值,在Start方法中将allitem的子物体按顺序放入刚刚新建的数组items中,以便使用
void Update()
{
num = button_control.GetComponent<click_control>().click_num;
if (oldnum != num)
{
items[oldnum % N].SetActive(false);
items[num % N].SetActive(true);
oldnum = num;
}
}
在update方法中放入时刻检测上次我们创建的物体button_control中的组件click_control中的click_num的值并赋给num,一旦发现与现在展示的物体编号不同,即oldnum != num,便使上一个物体失活并激活下一个将要展示的物体。即可做到物体切换。
改进思路
可以看到我在Start方法中注释了一个语句,用于在脚本内获取子物体的值而非外部修改N的值,这样可以不需要在每次添加物体后手动修改N的值,而是可以自动化的统计展品的数量。