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

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

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

Q&A

解決済

1回答

5244閲覧

unityでUI(ボタン)を動的に生成したい

tsuneet

総合スコア16

0グッド

0クリップ

投稿2022/01/24 03:05

編集2022/01/24 03:35

プログラミング初心者です。
unityでボタンUIをスクリプトから生成しようとしています。
まずhierarchy viewでボタンオブジェクト(ButtonA)を作成し、prefab化しました。ButtonA作成と同時にcanvasが自動生成されています。
オブジェクト同様にスクリプトでボタンを生成しようとするも、生成されず。
調べるとUIはcanvasを親に指定しないとだめと知り、

C#

1objButton.transform.SetParent(canvas.transform, false);

のようにしてみました。調べる範囲内だとこのような方法で動作するはずですが、うまくいきません。何か根本的に間違えているのでしょうか。
教えていただけると幸いです宜しくお願いいたします。

イメージ説明

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class NewBehaviourScript : MonoBehaviour 7{ 8 9 public GameObject canvas; 10 public GameObject text; 11 // Start is called before 12 // the first frame update 13 void Start() 14 { 15 GameObject objButton = (GameObject)Resources.Load("ButtonA"); 16 objButton.transform.SetParent(canvas.transform, false); 17 Instantiate(objButton, new Vector3(5.0f, 5.0f, 0.0f), Quaternion.identity); 18 } 19 20 // Update is called once per frame 21 void Update() 22 { 23 24 } 25} 26

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

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

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

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

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

guest

回答1

0

ベストアンサー

objButtonはリソースをロードしただけで、まだ生成されていないオブジェクトではないでしょうか
提示コードだと生成したボタンに対しては特に何もしていないことになります。なのでいじるのは生成したオブジェクトにしたら動くんじゃないでしょうか

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class NewBehaviourScript : MonoBehaviour 7{ 8 9 public GameObject canvas; 10 public GameObject text; 11 // Start is called before 12 // the first frame update 13 void Start() 14 { 15 GameObject objButton = (GameObject)Resources.Load("ButtonA"); 16 // objButton.transform.SetParent(canvas.transform, false); 17 // Instantiate(objButton, new Vector3(5.0f, 5.0f, 0.0f), Quaternion.identity); 18 19 // インスタンス化したものを変数に入れて参照を取ります 20 var newBtn = Instantiate(objButton, new Vector3(5.0f, 5.0f, 0.0f), Quaternion.identity); 21 // 先程生成したオブジェクトの親をCanvasに変えます 22 newBtn.transform.SetParent(canvas.transform, false); 23 } 24}

投稿2022/01/24 04:49

hogefugapiyo

総合スコア3302

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

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

tsuneet

2022/01/24 11:50

ご指摘の通りに変更したらうまく動作しました。 完全にハマってしまっていたので助かりました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問