一、目的:
1、如果每一个物体都隐藏就将obj_fly_male_first隐藏的问题;
2、这个问题可以提升到:数组里面如果所有的元素都是同一个属性就执行某动作
二、操作
1、方法一:
①如下图:数组里的物体,如果每一个物体都隐藏就将obj_fly_male_first隐藏
②for循环如果某物体隐藏,则计数一次,当计数次数等于数组长度,就开始让obj_fly_male_first隐藏,这样就完成了目的
③为了让物体在状态变换后只变换一次,则使用一个bool变量来控制
④计数、设置隐藏分为俩个步骤,不要混在一起,以后其余程序也要这样,功能单独分开执行
/// <summary>
/// 功能:显示或者隐藏雄UI
/// </summary>
private void ShowOrHide_male_first()
{
for (int i = 0; i < arr_obj_male_first.Length; i++)
{
if (arr_obj_male_first[i].gameObject.activeSelf == false)
{
if (arr_obj_male_first[i].GetComponent<MeshRenderer>().receiveShadows == true)
{
arr_obj_male_first[i].GetComponent<MeshRenderer>().receiveShadows = false;
hide_maleNumber++;
}
}
else if (arr_obj_male_first[i].gameObject.activeSelf == true)
{
if (arr_obj_male_first[i].GetComponent<MeshRenderer>().receiveShadows == false)
{
arr_obj_male_first[i].GetComponent<MeshRenderer>().receiveShadows = true;
hide_maleNumber--;
}
}
}
if (hide_maleNumber < arr_obj_male_first.Length && obj_fly_male_first.gameObject.activeSelf == false)
{
obj_fly_male_first.gameObject.SetActive(true);
}
else if (hide_maleNumber >= arr_obj_male_first.Length && obj_fly_male_first.gameObject.activeSelf == true)
{
hide_maleNumber = arr_obj_male_first.Length;
obj_fly_male_first.gameObject.SetActive(false);
}
}