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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

1回答

777閲覧

Prefabで作ったオブジェクトをヒエラルキーにペーストして名前を動的に変更させる

Yuki_Unity

総合スコア129

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2018/03/31 08:16

作ったオブジェクトをProjectウィンドウへPrefabで保存しました。
作ったオブジェクトは削除しています。

###理想
手順
1,

Prefabの名前をObjectにして、ObjectPrefabをヒエラルキーにオブジェクトとしてスクリプトから大量に生成したいです。

2,

また、それらのゲームオブジェクトの名前はobject01,Object02,Object03....のように名前を自動的に変えるようにしたいです。

3,

また、それぞれに違ったColorを当てはめたいです。

###環境
Unity2D
Unity2017.3
Windows8.1

どなたか回答お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Prefabのゲームオブジェクトの生成は「エディタ上での編集中」なのか「ゲーム中」なのかよく分からなかったのですが、おそらく前者だろうと思ったので、そのつもりで回答します。

C#

1using UnityEngine; 2using UnityEditor; 3using System.Collections; 4 5// Editorフォルダに格納して、メニューの「Editor→CreatePrefab」から実行してください 6public class CreateObject : Editor 7{ 8 // プレハブのファイルのパス 9 const string Path = "Assets/Object.prefab"; 10 11 // 生成するオブジェクトの色 12 static Color[] ObjectColor = new Color[] { 13 new Color(1f, 0f, 0f), 14 new Color(0f, 1f, 0f), 15 new Color(0f, 0f, 1f) 16 }; 17 18 [MenuItem("Editor/CreatePrefab")] 19 static void CreatePrefab() 20 { 21 // プレハブをファイルから取得 22 GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(Path); 23 24 for (int loop = 0; loop < ObjectColor.Length; loop++) 25 { 26 // 取得したプレハブからオブジェクトを生成 27 GameObject newGameObject = Instantiate(prefab); 28 29 // オブジェクトの名前を変更 30 newGameObject.name = "Object" + (loop + 1).ToString("00"); 31 32 // 色を変更 33 newGameObject.GetComponent<SpriteRenderer>().color = ObjectColor[loop]; 34 } 35 } 36}

投稿2018/03/31 10:23

fiveHundred

総合スコア9797

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

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

Yuki_Unity

2018/03/31 23:45

回答有り難うございます。 Editor/CreatePrefabは何を意味しているのでしょうか。 少し教えてほしいです。お願いします。
fiveHundred

2018/04/01 02:20

メニューバーの「Editor→CreatePrefab」から実行できるようにするために、指定しております。 このスクリプトはゲームオブジェクトにアタッチするものではない点に注意してください。 (コメントに記載している通り、Editorフォルダに格納してメニューバーから実行するものです) もし、ゲーム中に実行したいなどの理由で、ゲームオブジェクトにアタッチしたい場合は、適宜書き換えてください。 (この場合、AssetDatabase.LoadAssetAtPath()はエディタ上でしか使えない点に注意してください)
Yuki_Unity

2018/04/01 03:05

なるほど わかりやすく有難うございます! 是非利用させていただきます。
Yuki_Unity

2018/04/01 03:54

すみません ベストアンサーをつけたのですが、最後に一つ質問です。 「Editor→CreatePrefab」からゲームオブジェクトを作ったのですが、二回目以降も同じ名前で作成されます。数字が1ずつ増えていくようにしたいのですがどうすればいいのでしょうか。
fiveHundred

2018/04/01 04:48

「すでに同名のオブジェクトがあれば、次の名前を使う」といった処理を加えるのはどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問