当前位置:网站首页>Lookup encapsulation of unity monobehavior component

Lookup encapsulation of unity monobehavior component

2022-06-22 07:35:00 Liam666

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()
    {

    }
}
原网站

版权声明
本文为[Liam666]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202220535459174.html