我有一個包含 20 個子物件的父游戲物件。他們中很少有人活躍,其余的都是不活躍的。如何檢查我的 if 陳述句是否有 5 個和不太活躍的子物件?目前它只是計算孩子的數量,而不考慮他們的活躍/不活躍狀態。
void Start () {
//Active Child count
if (this.transform.childCount <= 5) {
}
}
uj5u.com熱心網友回復:
如果你喜歡 inq,你可以成為 unig,例如
using System.Linq;
...
var count = transform.Cast<Transform>().Where(child => child.gameObject.activeSelf).Coun();
無論出于何種原因Transform只實作泛型IEnumerable,所以您首先必須Cast將結果從objectintoTransform再次。然后你只過濾那些active GameObjects,最后你Count那些。
或者只使用顯式形式
var count = 0
foreach(Transform child in transform)
{
if(child.gameObject.activeSelf) count ;
}
uj5u.com熱心網友回復:
要檢查游戲物件是否處于活動狀態,請使用以下行:
If(myGameObject.activeSelf)
//Do something if myGameObject is active
您有 20 個孩子,因此您需要遍歷所有游戲物件并檢查它們是否處于活動狀態。
public void checkActive()
{
int activeCounter = 0;
for(int i = 0; i < parent.transform.childCount; i )
{
if(parent.transform.GetChild(i).gameObject.activeSelf)
{
activeCounter ;
}
}
Debug.Log("active gameObjects = " activeCounter);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534995.html
標籤:C#unity3d
下一篇:禁用除一個以外的所有游戲物件
