一、封装一个基类,实现继承类创建一次后,脱离调用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()方法来实现调用功能。