Transform[] drawns = GetComponentsInChildren<Transform>()
這也包括父級,但我只想獲取腳本連接的變換的子級。
問題是它也在回圈中破壞父級。繪圖陣列中的第一項是父項:
case DrawStates.DrawOnGizmosRuntime:
drawOnce = true;
if (line != null && drawOnGizmos == false)
{
Transform[] drawns = GetComponentsInChildren<Transform>();
if (drawns.Length > 0)
{
foreach (Transform drawn in drawns)
{
Destroy(drawn.gameObject);
}
}
}
if (boxCollider == null)
{
boxCollider = boxColliderToDrawOn.GetComponent<BoxCollider>();
}
drawOnGizmos = true;
break;
uj5u.com熱心網友回復:
實際上有幾種方法可以找到沒有父母的孩子。
foreach (var child in children) Debug.Log(child);
使用 Where 擴展:
使用后system.linq
,可以分離出不是原始變換的孩子,如下圖。
var children = transform.GetComponentsInChildren<Transform>().Where(t => t != transform);
洗掉索引 0:
由于索引 0 始終是主變換,因此您可以在將子項轉換為串列后將其洗掉。
var children = transform.GetComponentsInChildren<Transform>().ToList();
children.RemoveAt(0);
使用跳過(1)
感謝親愛的@Enigmativity,另一個解決方案是使用Skip(1)
,它實際上避免了主要的變換成員。
var children = transform.GetComponentsInChildren<Transform>().Skip(1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/484714.html
上一篇:不再查看物件時停止勾勒物件?
下一篇:(統一)進度條向后出現