unity MonoBehaviour组件的查找封装

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

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值