1.尋找物體
1.1 尋找滿足條件的子物體
` public static Transform FindObj(Transform transform, Func<Transform, bool> condition, bool isGrandsonObj = false)
{
Transform[] allChilds = transform.GetComponentsInRealChildren<Transform>(isGrandsonObj);
foreach (Transform child in allChilds)
{
if (condition(child))
{
return child;
}
}
return transform;
}
public static Transform FindObj(Transform transform, string tag, bool isGrandsonObj = false)
{
return FindObj(transform, (t) => t.tag.Equals(tag), isGrandsonObj);
}`
1.2 尋找一組滿足條件的子物體
` public static List<Transform> FindObjs(Transform transform, Func<Transform, bool> condition, bool isGrandsonObj = false)
{
Transform[] allChilds = transform.GetComponentsInRealChildren<Transform>(isGrandsonObj);
List<Transform> list = new List<Transform>();
foreach (Transform child in allChilds)
{
if (condition(child))
{
list.Add(child);
}
}
return list;
}
public static List<Transform> FindObjs(Transform transform, string tag, bool isGrandsonObj = false)
{
return FindObjs(transform, (t) => t.tag.Equals(tag), isGrandsonObj);
}`
2. 操作一組物體
2.1 對一組滿足條件物體進行操作
` public static void AddActionObjects(Transform[] transform, Func<Transform, bool> condition, Action<Transform> action)
{
foreach (Transform child in transform)
{
if (condition(child))
{
action(child);
}
}
}`
2.2 常用擴充套件方法
` public static void AddActionObjects(Transform[] transform, Action<Transform> action)
{
AddActionObjects(transform, (t) => true, action);
}
public static void AddActionObjects(Transform transform, Func<Transform, bool> condition, Action<Transform> action, bool isGrandsonObj = false)
{
Transform[] allChilds = transform.GetComponentsInChildren<Transform>(isGrandsonObj);
AddActionObjects(allChilds, condition, action);
}
public static void AddActionObjects(Transform transform, Action<Transform> action, bool isGrandsonObj = false)
{
AddActionObjects(transform, (t) => true, action, isGrandsonObj);
}
public static void AddActionObjects(Transform transform, string tag, Action<Transform> action, bool isGrandsonObj = false)
{
AddActionObjects(transform, (t) => t.tag.Equals(tag), action, isGrandsonObj);
}
`