###前提・実現したいこと
Unity5.5.1(C#)を使ってアプリを作っています。
Update()内で同時に2種類の動作を実現するため、IEnumeratorを使い、コルーチン(マイクロスレッド?)を実装したいのですが、うまくいっていません。
IEnumeratorの使い方をお教えいただけると幸いです。
###発生している問題・エラーメッセージ
エラーメッセージは1フレームに1回出ているようです。
NullReferenceException UnityEngine.MonoBehaviour.StartCoroutine (IEnumerator routine) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/MonoBehaviourBindings.gen.cs:54) Manager.Update () (at Assets/Scripts/Manager.cs:80)
Manager.csの80行目には下記ソースの
StartCoroutine(panelChange());
が書かれています。
###該当のソースコード
C#
1 int loop = 0; 2 public void Update() { 3 if(loop == 0) { 4 StartCoroutine(secondTask()); 5 } 6 ……他の処理…… 7 loop++; 8 } 9 10 IEnumerator secondTask() { 11 while (true) { 12 //ここに他の処理が書きたい 13 yield return null; 14 } 15 }
###試したこと
secondTaskを一度呼べばいいと思ったので、UpdateではなくStart内で始める手も試しましたが、同様にエラーが発生しました。
###追記
更に調べてみたところ、どうやらこのScriptをGameObjectにアタッチせず、他のScript(こちらはアタッチされている)からnewで呼び出しているのが原因かもしれないとわかってきました。
しかし、このScriptは引数を持つのですが、単純に新しいGameObjectをつくり、AddComponentでアタッチするのでは引数が渡せません。
質問内容は異なりますが、こちらの方法を試してみるため、適切なやり方を教えていただけないでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/03 01:16
2017/04/03 01:23
2017/04/03 01:46
2017/04/03 02:12
2017/04/03 04:49