我有对象A和预制件B.在每个附加的脚本" ScriptA"和" ScriptB"。在" ScriptA"我需要来自" ScriptB"的呼叫功能。我试过这个(C#代码):
public ScriptB MyScript;
MyScript.function();
但我无法将对象A附加到公共变量" MyScript",我只看到交叉圆圈图标。有什么问题?
答案 0 :(得分:1)
如何从附加到的其他脚本调用一个脚本中的函数 预制?
你不能直接这样做,因为这是一个预制件。要访问附加到预制件的脚本,请实例化预制件,然后使用GetComponent
来获取脚本。
//Assign the prefab from the Editor
public GameObject prefab;
public ScriptB MyScript;
void Start()
{
//Instantiate prefab
GameObject obj = Instantiate(prefab);
//Get script attached to it
MyScript = obj.GetComponent<ScriptB>();
//Call the function
MyScript.function();
}
如果ScriptB
已经附加到场景中的GameObject(在层次结构选项卡中查看),那么您不必实例化它。只需找到GameObject,然后使用GetComponent
来附加脚本。
ScriptB MyScript;
void Start()
{
//Find the GameObject
GameObject obj = GameObject.Find("NameOfGameObjectScriptBIsAttachedTo");
//Get script attached to it
MyScript = obj.GetComponent<ScriptB>();
//Call the function
MyScript.function();
}
答案 1 :(得分:-1)
如果您使用公共游戏对象,则可以参考该脚本。然后您可以参考脚本中的函数。
//This would be in script A
public gameObject objectB;
void Start () {
objectB.functionB();
}
确保您的功能是public void
。
//This would be in script B
public void functionB () {
//Do something
}