Unity3D:如何从附加到预制件的其他脚本中调用一个脚本中的函数?

我有对象 A 和预制件 B。在每个附加的脚本“ScriptA”和“ScriptB”上。在“ScriptA”中,我需要从“ScriptB”调用函数。我试过这个(C#代码):


public ScriptB MyScript;

MyScript.function();

但是我不能将对象 A 附加到公共变量“MyScript”,我只看到交叉的圆圈图标。什么问题?


冉冉说
浏览 457回答 2
2回答

蛊毒传说

如何从附加到预制件的其他脚本中调用一个脚本中的函数?你不能直接这样做,因为这是一个预制件。要访问附加到预制件的脚本,请实例化预制件,然后使用GetComponent获取脚本。//Assign the prefab from the Editorpublic GameObject prefab;public ScriptB MyScript;void Start(){&nbsp; &nbsp; //Instantiate prefab&nbsp;&nbsp; &nbsp; GameObject obj = Instantiate(prefab);&nbsp; &nbsp; //Get script attached to it&nbsp; &nbsp; MyScript = obj.GetComponent<ScriptB>();&nbsp; &nbsp; //Call the function&nbsp; &nbsp; MyScript.function();}如果ScriptB已经附加到场景中的 GameObject(在 Hierarchy 选项卡中看到),那么您不必实例化它。只需找到游戏对象,然后使用它GetComponent来获取附加到它的脚本。ScriptB MyScript;void Start(){&nbsp; &nbsp; //Find the GameObject&nbsp; &nbsp; GameObject obj = GameObject.Find("NameOfGameObjectScriptBIsAttachedTo");&nbsp; &nbsp; //Get script attached to it&nbsp; &nbsp; MyScript = obj.GetComponent<ScriptB>();&nbsp; &nbsp; //Call the function&nbsp; &nbsp; MyScript.function();}

狐的传说

如果您使用公共游戏对象,则可以参考该脚本。然后就可以参考脚本中的函数了。//This would be in script Apublic gameObject objectB;void Start () {&nbsp; objectB.functionB();}只需确保您的函数是public void.//This would be in script Bpublic void functionB () {&nbsp; //Do something}
打开App,查看更多内容
随时随地看视频慕课网APP