質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2751閲覧

Unity Inputfieldの値を代入するとエラーが起こる

ssssggg

総合スコア40

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/04/25 12:11

編集2019/04/26 03:56

Unityについてです。
下記のコードの元、InputFieldの値を変数に代入したいのですが、エラーが起きてしまいます。
どうすればいいですか?回答お願いします。

エラー


NullReferenceException: Object reference not set to an instance of an object
Message+<Startfase>c__Iterator1.MoveNext () (at Assets/Message.cs:80)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

コード

public class Message : MonoBehaviour { public InputField inputField; public Text InputText; public Text messagewindow; public GameObject InputF; int En = 0; string pl; int fase = 0; int flee = 0; int Wait = 0; int m_syori = 0; string daihon; string playername; int Z; private void Start() { StartCoroutine("Startfase"); } // OutputMessage 引数 string IEnumerator OutputMessage(string msg) { flee = 1; m_syori = 1; //string daihon = daihonrist[messagezan]; transform.position = new Vector2(-0.8f, -5.5f); // 引数でもらった文字列の文字数分繰り返し for (int i = 0; i < msg.Length; i++) { var outputText = msg.Substring(i, 1); // 先頭からi文字目を切り出す messagewindow.text = messagewindow.text + outputText;// テキストに反映 yield return new WaitForSeconds(Wait); // x秒待つ } m_syori = 0; Debug.Log("hai"); while (Z == 0) { yield return new WaitForSeconds(0.01f); } messagewindow.text = ""; flee = 0; transform.position = new Vector2(1000, 1000); } IEnumerator Startfase() { inputField = GetComponent<InputField>(); InputText = GetComponent<Text>(); InputF.SetActive(false); daihon = "あなたの名前は?";//daihonrist[messageenzan]; messagewindow.text = "";//textを初期化 StartCoroutine("OutputMessage", daihon); fase = 1; Debug.Log(playername); while (flee == 1) { yield return new WaitForSeconds(0.01f); } m_syori = 0; InputF.SetActive(true); while (En == 0) { yield return new WaitForSeconds(0.01f); } playername = inputField.text;//エラーが起きる部分はここら辺 Debug.Log(playername+":"+inputField.text); yield return new WaitForSeconds(0.01f); InputF.SetActive(false); Debug.Log(playername); daihon = playername;//daihonrist[messageenzan]; messagewindow.text = "";//textを初期化 StartCoroutine("OutputMessage", daihon); fase = 1; while (flee == 1) { yield return new WaitForSeconds(0.01f); } m_syori = 0; } private void Update() { if (Input.GetKeyDown(KeyCode.Return)) { En = 1; } else { En = 0; } if (Input.GetKeyDown(KeyCode.Z)) { Z = 1; } else { Z = 0; } if ((fase == 1) && (Input.GetKeyDown(KeyCode.KeypadEnter))) { playername = inputField.text; Debug.Log(playername); } } ```````````````````````````````````````````````````````````````````@

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2019/04/26 01:06

inputField = GetComponent<InputField>(); ここでInputFieldが取得出来ずにnullになっていていることが予想されます。「このスクリプトが付いているオブジェクト」にInputFieldコンポーネントが付いているか確認してください。 (あとスクリプトは上下を「```」で挟むと読みやすくなるので質問編集してもらえると助かります)
ssssggg

2019/04/26 04:10 編集

指摘ありがとうございます。 InputFieldがNullになっていないか調べたところ、アタッチはされていたのですが、シーンを開始したらInputFieldがNoneに変わってしまいました。 どこかで上書きされているのでしょうか?何が原因ですか?
ssssggg

2019/04/26 04:11 編集

ありました。Startfaseコルーチンで上書きされていました。
sakura_hana

2019/04/26 04:11

最初のコメントに書いた通り、inputField = GetComponent<InputField>(); この部分で上書きされてます。 自分でアタッチしているならこの行は不要です。 解決したら自己回答投稿してクローズお願いしますー。
ssssggg

2019/04/26 04:13

解決しました。ありがとうございました。
guest

回答1

0

自己解決

inputfieldを二重に指定していたので直しました。

投稿2019/04/26 04:12

ssssggg

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問