using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

public class SimMonoBehaviour : MonoBehaviour
{

    protected T findComponent<T>(Transform parent, string path) where T : Component
    {
        if (parent == null)
            return null;

        Transform transform = parent.Find(path);
        if (transform == null)
            return null;

        T component = transform.GetComponent<T>();

        return component;
    }

    protected T addComponent<T>(Transform parent) where T : Component
    {
        return addComponent<T>(parent, "");
    }

    protected T addComponent<T>(GameObject obj) where T : Component
    {
        return addComponent<T>(obj.transform, "");
    }

    protected T addComponent<T>(string path) where T : Component
    {
        return addComponent<T>(this.transform, path);
    }

    protected T addComponent<T>(Transform parent, string path) where T : Component
    {
        if (parent == null)
            return null;

        Transform transform = parent.Find(path);
        if (transform == null)
            return null;

        T component = transform.GetComponent<T>();
        if (component == null)
            component = transform.gameObject.AddComponent<T>();

        return component;
    }


    protected T findComponent<T>(string path) where T : Component
    {
        return findComponent<T>(this.transform, path);
    }

    protected Button findButton(Transform parent, string path, UnityAction action)
    {
        Button button = findComponent<Button>(parent, path);
        if(button != null && action != null)
        {
            button.onClick.AddListener(action);
        }
        return button;
    }


    protected Button findButton(string path, UnityAction action)
    {
        return findButton(this.transform, path, action);
    }



    protected virtual void Awake()
    {

    }

    protected virtual void OnEnable()
    {

    }

    protected virtual void Start()
    {

    }
    
    protected virtual void FixedUpdate()
    {

    }

    protected virtual void Update()
    {

    }

    protected virtual void LateUpdate()
    {

    }

    protected virtual void OnDisable()
    {

    }


    protected virtual void OnDestroy()
    {

    }
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐