Unity3D 功能性封装

一、封装一个基类,实现继承类创建一次后,脱离调用Unity3D先找到gameObject,才能访问物体上上脚本组件。

      实现原理,在Awake方法内,将脚本添加到一个字典Dictionary里面。使用时,从字典里获取。

      基类源码:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
[ExecuteInEditMode]
public class ZeroneXMono : MonoBehaviour
{
    /// <summary>
    /// string 代指当前 gameObject.Name
    /// </summary>
    public static Dictionary<string, Component> scriptsMonobehaviours = new Dictionary<string, Component>();


    public void Awake()
    {
        scriptsMonobehaviours.Add(name, this);
    }


    private void Start()
    {


    }


    public static T GetComponent<T>(string name)
    {
        return scriptsMonobehaviours[name].GetComponent<T>();
    }

}

测试脚本 B:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;


public class B : ZeroneXMono
{
    private void Start()
    {


    }
    public void DebugB()
    {
        Debug.Log("B");
    }

}

测试脚本 A:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;


public class A : MonoBehaviour
{
    private void Start()
    {


    }
    public void DebugD()
    {
        ZeroneXMono.GetComponent<B>("B").DebugB();
    }

}

测试方法:将脚本A、B分别挂在两个空物体上,将脚本B的gameObject名称改为"B",通过执行A脚本DebugD()方法来实现调用功能。


猜你喜欢

转载自blog.csdn.net/yuyingwin/article/details/80074119