解決:如果每一個物體都隱藏就將obj_fly_male_first隱藏的問題

一、目的:

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);
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章