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

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

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

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

Unity

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

Q&A

解決済

1回答

1322閲覧

Prefabを増やした上で、増やしたPrefabに名前を付けたい

nnn123

総合スコア13

C#

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

Unity

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

0グッド

0クリップ

投稿2018/11/20 06:43

Prefabを増やした上で、増やしたPrefabに名前を付けたい

Unity初心者です。
ButtonのPrefabを複数作った上で、増やしたPrefabに「Button01/Button02...」といったように名前を自動的に付けたいと思っていますが方法が分かりません。

また、増やしたオブジェクトの位置を「増やした数に応じて」表示する位置を調節したいです。
こちらの解決策も教えていただけると大変ありがたいです。

発生している問題・エラーメッセージ

Prefabを増やせても、増やしたPrefabに自動的に名前を付ける方法が分からない

該当のソースコード

C#

1using System;2using System.Collections; 3
using System.Collections.Generic; 4
using UnityEngine; 5 6

public class CreateManager : MonoBehaviour
{7 8//Canvasコンポーネントの付いたオブジェクトをアタッチしておく
 9public Transform CanvasNyuryoku;10 11  // 初期化
 12 void Start()13 { 14 15


 } 16 17 // Update is called once per frame
 18 void Update()19 {

 20 21 } 22 23 public void PushKari()24 { 25

  // ResourcesフォルダからButtonプレハブのオブジェクトを取得
 26 GameObject obj = (GameObject)Resources.Load("Button01");


 27 28 //ButtonのPrefabを+を押した分だけ増やす
 29 GameObject prefab = Instantiate(obj, new Vector3(-0.5f, 2.0f, 0.0f), Quaternion.identity);

 30 31 ButtonPrefab Button = prefab.GetComponent<ButtonPrefab>();32 prefab.transform.SetParent(CanvasNyuryoku);33 prefab.transform.localScale = Vector3.one;34 35 } 36 37} 38

コード内の「+」は、Game上においてPrefabが増えているか確認するため、OnClickとしてScriptを付けているButtonオブジェクトになります

補足情報(FW/ツールのバージョンなど)

・Unity 2018.2.16f1

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

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

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

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

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

guest

回答1

0

ベストアンサー

ゲームオブジェクトの名前を変えること自体はカンファレンスに書いています。
Unity カンファレンス

増やした分だけ名まえを自動で変えるなら、生成した数を記憶して

int count;//生成した回数 GameObject prefab = Instantiate(obj, new Vector3(-0.5f, 2.0f, 0.0f), Quaternion.identity);
 prefab.name = "Button"+ count.ToString();

でいけるかと思います。

増やした数に応じて表示する場所を変えたいということは、生成する場所を変えたいということですか?
もしそうなら、どう変化させたいのか分かりませんが
Instantiate(obj, new Vector3(-0.5f, 2.0f, 0.0f), Quaternion.identity);
のnew Vector3(-0.5f, 2.0f, 0.0f), を先ほどのcountを用いてたらいけるかと思います。

例えば

GameObject prefab = Instantiate(obj, new Vector3(-0.5f * count, 2.0f, 0.0f), Quaternion.identity);

のようにすると大丈夫だと思います。

投稿2018/11/20 08:21

TomoG12

総合スコア299

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

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

nnn123

2018/11/21 07:31

早々に回答していただきありがとうございます。 しかし GameObject prefab = Instantiate(obj, new Vector3(-0.5f * count, 2.0f, 0.0f), Quaternion.identity); と書いた場合、()内のcountが「未割り当てのローカル変数’count’が使用されました」とエラーを起こしてしまいました。なので「int count;」の下に「count = 1;」と入れたところ、エラーは消えたのですが、[+]ボタンを押しても押した回数に応じて名前と位置は変化しませんでした…。
TomoG12

2018/11/22 00:22

大変遅くなりました。 int countは例えばの宣言で書いていました。失礼しました。 正しくかくならint count = 0 を public Transform CanvasNyuryoku;のすぐ下。 PushKari関数の最後にcount++;を追加してください。 提示したint count の下にcount = 1を入れると、countの数値が常に1となるため変化しません。 そのためcountをグローバル変数にすることで対応しています。
nnn123

2018/11/24 11:59

こちらこそ返信が遅くなってしまい、大変申し訳ありません。 教えて下さった通りに書いたところ、ちゃんとPrefabの名前変更/位置変更が出来るようになりました!本当にありがとうございます。 また、countの数字についても詳しく教えていただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問