为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
冉冉说 2021-08-07 17:40:00
我有对象 A 和预制件 B。在每个附加的脚本“ScriptA”和“ScriptB”上。在“ScriptA”中,我需要从“ScriptB”调用函数。我试过这个(C#代码):public ScriptB MyScript;MyScript.function();但是我不能将对象 A 附加到公共变量“MyScript”,我只看到交叉的圆圈图标。什么问题?
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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


你不能直接这样做,因为这是一个预制件。要访问附加到预制件的脚本,请实例化预制件,然后使用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(在 Hierarchy 选项卡中看到),那么您不必实例化它。只需找到游戏对象,然后使用它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();

}


查看完整回答
反对 回复 2021-08-07
?
狐的传说

TA贡献1804条经验 获得超3个赞

如果您使用公共游戏对象,则可以参考该脚本。然后就可以参考脚本中的函数了。


//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

}


查看完整回答
反对 回复 2021-08-07
  • 2 回答
  • 0 关注
  • 456 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信