Instantiateを使ってGameObjectを作成した後にGameObjectのメソッド呼び出しを行いたい.
閲覧していただきありがとうございます.
Unityを使った開発を行っております.その中でInstantiateを使ってGameObjectをスクリプトから作成し,そのGameObjectが持つメソッドを呼び出そうとしております.その際のGameObjectの作成が終了するタイミングがよくわからず質問いたしました.
Objectが持っているスクリプトからUIのCanvasが持っているTextの中身を書き換えようとしています.しかし下記のソースコードのような書き方だとDialogHandlerにおいてStart()よりもSetText()のほうが先に呼ばれてしまい,Debug.Logではtest2, test1の順で表示されてしまいます.これですとTextを書き換えようとしてもそもそもGameObjectが作成されていないのでエラーとなってしまいます.
InstantiateでGameObjectを作成した後の呼び出しにはどのような方法を用いればよろしいのでしょうか?
何かアドバイスをいただけると助かります.
該当のソースコード
C#
1public class Exploder : MonoBehaviour 2{ 3 public void GeneratePanel() 4 { 5 GameObject listPanel = Instantiate(samplePanel) as GameObject; 6 listPanel.transform.SetParent(canvas.transform, false); 7 listPanel.GetComponent<DialogHandler>().SetText("test"); 8 } 9 10}
public class DialogHandler : MonoBehaviour { private Text targetText; public bool isActive { get; private set; } // Start is called before the first frame update void Start() { Debug.Log("test1"); this.targetText = this.GetComponentInChildren<Text>(); } // Update is called once per frame void Update() { } public void SetText(string _text) { Debug.Log("test2"); // this.targetText.text = "test"; } }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/04 07:43