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

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

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

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

Unity

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

Q&A

解決済

1回答

2795閲覧

【Unity】Prefabで生成したオブジェクト内のTextMeshProの内容を取得したい

arapon516

総合スコア15

C#

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

Unity

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

0グッド

0クリップ

投稿2021/12/06 10:22

編集2021/12/06 10:23

閲覧ありがとうございます.
今回はPrefabで生成したオブジェクト(Enemy)に内包されているTextMeshPro内のデータ(写真の大学名の部分)をテキスト形式で取得し,オブジェクトの名前にしたいと考えています.
以下のようなコードを自分で考えてみたのですが,NullReferenceException: Object reference not set to an instance of an objectが出ました.
どのように書き換えればうまくいくと思われますか.
この部分に何日も躓いており,お力をお借りしたいと思い質問させて頂きました.宜しくお願い致します.
prefabにTextMeshProの内容(大学名)を決定し代入するコードも載せておきます.

イメージ説明

C#

1//Spawn(生成)するコード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using TMPro; 6 7public class Spawner : MonoBehaviour { 8 9 public GameObject Enemy; 10 public GameObject obj; 11 public int spawntime; 12 public bool spawn; 13 14 // Use this for initialization 15 void Start () { 16 spawn = true; 17 } 18 19 // Update is called once per frame 20 void Update () { 21 if (spawn) 22 { 23 Spawn(); 24 } 25 } 26 27 void Spawn () 28 { 29 spawn = false; 30 obj = Instantiate(Enemy, transform.position, transform.rotation); 31 obj.name = this.GetComponent<TextMeshPro>().text; //ここで名前を付けようとしました. 32 StartCoroutine(spawndelay()); 33 } 34 35 IEnumerator spawndelay () 36 { 37 yield return new WaitForSeconds(spawntime); 38 spawn = true; 39 } 40} 41 42 43

C#

1//TextMeshProの内容を決定するコード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using TMPro; 6 7public class textmesh 8 : MonoBehaviour 9{ 10 public TextMeshPro GeneText; 11 string sentence; 12 string rnd ; 13 public static int c1; 14 public static int c2; 15 // Start is called before the first frame update 16 void Start() 17 { 18 c1 = Random.Range(0, 1001); 19 c2 = Random.Range(0, 1); 20 rnd = csv.getCSV(c1,1) ; //大学名リストからランダムに大学名を取り出して変数に代入 21 GeneText.text = rnd ; //TextMeshProに代入 22 } 23 24 public static int getNum() 25 { 26 return c1; 27 } 28 29 public string getName() 30 { 31 return rnd; 32 } 33 34 // Update is called once per frame 35 void Update() 36 { 37 38 } 39}

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

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

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

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

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

guest

回答1

0

ベストアンサー

obj.name = this.GetComponent<TextMeshPro>().text; //ここで名前を付けようとしました.

TextMeshProはSpawnerのコンポーネントではなくEnemyの子であるeneTextのコンポーネントです。
objがEnemy(Clone)となりますので、ここでは

obj.GetComponentInChildren<TextMeshPro>().text;

とすれば取得できると思います。

投稿2021/12/06 13:32

YOshim

総合スコア1085

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

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

arapon516

2021/12/07 05:51

出来ました....!本当にありがとうございます;;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問