#問題点
コルーチンを使用したクラス内メソッドを外部から使用するとエラーが標示されてしまい、困っています。
#詳細
コルーチンを用いた一文字づつ表示する事が可能なメッセージウィンドウのクラスと、それに表示を分岐や条件によってメッセージを送るクラスの作成を考えています。
最初の一文字づつ表示させるクラスは完成しています。
外部クラスから上記クラス内メソッドにテキストとゲームオブジェクトを渡して下記のエラーとなってしまいます。何か問題なのでしょうか?
NullReferenceException: Object reference not set to an instance of an object
#コード
一文字づつ表示する為のクラスの一部です。元々は外部クラスからTextオブジェクトを持ってくる仕様になっておらずこちらをTextオブジェクトにアタッチしていました。今回の目的の為にIEWrite()やWrite()の引数にTextオブジェクトを取る用にしています。
C#
1public class MessageWriter: MonoBehaviour 2{ 3 public Text textObj; 4 IEnumerator IEWrite(string s, Text to) 5 { 6 //表示中の状態にする 7 isWriting = true; 8 for (int i = 0; i < s.Length; i++) 9 { 10 //テキストに1番目の文字を付け足して表示する 11 to.text += s.Substring(i, 1); 12 yield return new WaitForSeconds(0.2f); 13 } 14 //書いてる途中の状態を解除する 15 isWriting = false; 16 } 17 // テキストを書くメソッド 18 public void Write(string s, Text to) 19 { 20 StartCoroutine(IEWrite(s, to)); 21 } 22}
下記が条件によってメッセージを送り、表示させる為のクラスになります。
btnオブジェクト等にMessageControllerをアタッチし使いたいメソッドを指定、表示させたいTextオブジェクトを指定し、クリックしたら指定メソッド内のMessageWriterを実行したいと考えています。
C#
1public class MessageController : MonoBehaviour 2{ 3 public Text textObj; 4 public MessageWriter mw = new MessageWriter(); 5 6 public void test() 7 { 8 mw.Write("表示させたいメッセージ", textObj); 9 } 10} 11
#最後に
UnityとC#にあまり詳しくありません。この問題を解決できないのであればこのドキュメントを読むのがオススメと言うのがあれば教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/08 09:25
2021/06/08 09:31