unity中怎样调用其他脚本变量

2025-01-18 09:49:27
推荐回答(1个)
回答1:

  调用其他实例的脚本是一种很常用的需求,在Unity3D中实现起来也有多种方法,假设在ScriptB有一个DoSomething函数,如下所示:
  using UnityEngine;
  public class ScriptB : MonoBehaviour {
  public void DoSomething() {
  Debug.Log("Hi there");
  }
  }
  在ScriptA中如果要访问某个GameObject的ScriptB脚本中的DoSomething函数:
  using UnityEngine;
  public class ScriptA : MonoBehaviour {
  public ScriptB other;
  void Update() {
  other.DoSomething();
  }
  }
  注意ScriptA有一个ScriptB类型的公共变量,这是一个绝妙的小技巧,如此一来你便可以通过编辑器拖拽任何含有ScriptB这一脚本的GameObject至该变量上(因为是public的,所以暴露于编辑器界面中),Unity会自动识别你需要赋值的不是那个GameObject,而是它所包含的ScriptB脚本。
  除此之外,如果你不喜欢这种在编辑器中直接赋值的办法,你可以通过GameObject.Find(“somename”) 来获取GameObject:
  GameObject go = GameObject.Find("somegameobjectname");
  ScriptB other = (ScriptB) go.GetComponent(typeof(ScriptB));
  other.DoSomething();
  不过需要注意的是GameObject.Find()的执行效率非常低,所以如果可能的话还是尽可能使用“直接赋值法”吧