亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 520 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號