Newer
Older
Marco Zimmer
committed
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class GameObjectExtensions
{
public static void SetActiveByTagRecursive(this GameObject root, string tag, bool enable)
=> root.ForAllChildren(child => {
Marco Zimmer
committed
child.SetActive(enable);
else
SetActiveByTagRecursive(child, tag, enable);
});
public static void DestroyAllChildren(this GameObject root)
=> root.ForAllChildren(child => GameObject.Destroy(child));
public static void SetActiveAllChildren(this GameObject root, bool active)
=> root.ForAllChildren(child => child.SetActive(active));
public static void ForAllChildren(this GameObject root, Action<GameObject> func_on_child)
{
for (int i = 0; i < root.transform.childCount; i++)
func_on_child(root.transform.GetChild(i).gameObject);
public static GameObject GetNthChild(this GameObject root, IEnumerable<int> pos)
{
GameObject ret = root;
foreach (var i in pos)
ret = ret.transform.GetChild(i).gameObject;
return ret;
}