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

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

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

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

Unity

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

Q&A

解決済

1回答

4105閲覧

Unity) PrefabにTextをアタッチしたい

TeraPanda

総合スコア13

C#

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

Unity

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

0グッド

0クリップ

投稿2019/02/04 09:50

編集2019/02/04 15:12

Unityの実装で質問があります。

実現したいこと

Prefabから生成したオブジェクトがタッチされたとき、Canvasの文字がそのタッチされたオブジェクトの名前に変わるようにしたいです。

構成

  • GameMaster(GameMaster.csをアタッチ)

C#

1public GameObject[] testPrefabs 2float timeleft; 3 4void Start () { 5 GameObject obj = Instantiate(testPrefabs[0], this.transform.position, Quaternion.identity) as GameObject; 6} 7 8//質問後に抜けてました。すみません(2/5 0:10) 9void Update(){ 10 //1秒ごとに生成 11 timeleft -= Time.deltaTime; 12 if (timeleft <= 0.0) { 13 timeleft = 1.0f; 14 GameObject obj = Instantiate(testPrefabs[0], this.transform.position, Quaternion.identity) as GameObject; 15 } 16}

Inspectorで、Assets/Prefab内のプレファブをtestPrefabsにセット。

  • プレファブ(PrefabScript.csをアタッチ)

C#

1public Text objName; //どのオブジェクトを触ったか表示するテキスト 2 3//タッチされたオブジェクトの名前をテキストに表示 4public void TouchObj(GameObject obj) { 5 objName.text = obj.name; 6}

Add ComponentでEventTriggerを追加。
EventTriggerのEventTypeはPointerClickで、自身を選択して、FunctionはPrefabScript.TouchObjとしました。

ここで、InspectorからPrefabScript.csのobjNameに、Canvas内のTextをセットしようとしましたが、できませんでした。

どのようにすれば、Textをセットできますでしょうか?
また、他に一般的な方法がありましたら提言していただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

publicを使ってインスペクタから入れるのではなく、GameObject.Find関数を使えばいいとおもいます。

public class example : MonoBehaviour { GameObject @object; // Start is called before the first frame update void Start() { @object = GameObject.Find("Main Camera"); Debug.Log(@object.name); }

ここで@objectがセットしたいテキストになります。(ここではMain Cameraの名前をとりだしています。)
これでPrehubからでもTextをセットできます。
ただセットしたいオブジェクトの名前を打ち込むので半角全角や打ち間違いに気をつけてください。

投稿2019/02/04 14:58

kotakot

総合スコア36

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

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

TeraPanda

2019/02/04 15:19

回答有り難うございます。 書き忘れで追記になってしまい大変申し訳ありませんが、GameMaster.csのUpdate内でも、1秒毎にプレファブからオブジェクトを生成しようと考えています。 他のサイトを見て「Find関数はHierarchy内を全て走査してしまうので処理が重い」と学んでましたが、この場合は特に問題ないでしょうか…? プレファブからオブジェクトが生成され、1回Findをする…を1秒毎に新しく生成されたオブジェクトが行うことになるので、少し気になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問