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

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

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

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

Q&A

解決済

1回答

953閲覧

Unity 動的なButtonの作成

yanagibu

総合スコア2

Unity

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

0グッド

0クリップ

投稿2021/07/04 22:05

前提・実現したいこと

Unityで、Scriptから、異なる複数のButtonを作成したい。

最大で30個ほどのButtonの予定。

それぞれのButtonの違いは、名前と画像。

発生している問題

作成自体はできているのですが、最適な作り方について教えてほしいです。

考えていた作成方法は、ベースとなるButtonのプレファブを作成し、
そのプレファブをスクリプトから生成し、画像と名前を変更することを考えていました。

その際画像はResources.Loadから取得しようと考えていましたが、検索すると否定的な意見が多く、どういった方法がよいのかわからなくなりました。

このような場合どのような方法で生成すると良いのでしょうか。
下記の方法のどちらがいい、もしくは別の方法がいいなど、教えていただけると幸いです。

該当のソースコード

for (int i = 0; i < Buttonの個数; i++) {

    Button tmp = Instantiate(ボタンのプレファブ);

tmp.transform.SetParent(transform, false); tmp.transform.name = i.ToString(); tmp.GetComponent<Image>().sprite = Resources.Load<Sprite>(画像のパス);

}

考えていること

考えているのは上記のベースとなるButtonのプレファブを作成し、
プレファブをスクリプトから生成し、画像と名前を変更すること。

もしくは名前と画像の違うButtonのプレファブを事前に作成しておき、
スクリプトから生成する。

前者の場合はプレファブは1つで済むが、Resources.Loadの使用やボタン毎にGetComponentを使用する必要があると思います。

後者はコード自体は簡単ですが30個ものプレファブを用意することになるためサイズやメモリを圧迫することになるのではないかと考えています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

個人開発なら現在の方法のまま、気にせずResources.Loadでもいいと思います。

一応Sprite型の配列を持っておきインスペクターからセットしておいて、ボタン生成時にResources.Loadの代わりに使用する形も考えられます。テクスチャのメモリが解放されづらいので全部のボタンを使わない・ボタンが消去される等の場合はあまり適さないかもしれませんが、画像が小さいなら気にしなくていいレベルかもしれないのでやる際はProfilerを確認するといいと思います。

なお将来的にAssetBundleを使う予定がある場合はその使い方を確認しておくといいのではと思います。

投稿2021/07/05 01:14

sakura_hana

総合スコア11427

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

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

yanagibu

2021/07/06 12:05

回答ありがとうございます。 Resources.Loadでやってみようと思います。 AssetBundleはサーバという単語を見て深く調べてはいなかったのですが、ローカルで使用することもできるのですね。 もう少し詳しく調べてみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問