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

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

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

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

Unity

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

Q&A

解決済

1回答

581閲覧

Unity: instantateで複製されるprefabの名前を変更したい

daytime

総合スコア7

C#

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

Unity

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

0グッド

0クリップ

投稿2017/08/23 13:57

###前提・実現したいこと
instantateで複製される際にコピーの名前をhoge0 hoge1...hoge5などのように変更し、かつ
一定の数値を超えるとまた0に戻るようなプログラムを実装したいです。

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

C#も初心者なのでどのようにコードを書けばよいのか分からず手詰まりです。
また質問が重複するようですが下記のコードの48行目のcher型をstring型に変更したいのですがエラーが出てできませんでした。こちらの方はできればで構いません。

###該当のソースコード

C#

1using UnityEngine; 2using System.Collections; 3 4[ExecuteInEditMode] 5public class StageCreator : MonoBehaviour 6{ 7 8 public TextAsset textAsset; 9 10 //配置するオブジェクト 11 //tag=common 12 public GameObject cNotes0; 13 public GameObject cNotes1; 14 public GameObject cNotes2; 15 public GameObject cNotes3; 16 public GameObject cNotes4; 17 //tag=slash 18 public GameObject sNotes0; 19 public GameObject sNotes1; 20 public GameObject sNotes2; 21 public GameObject sNotes3; 22 public GameObject sNotes4; 23 //tag=long 24 public GameObject lNotes0; 25 public GameObject lNotes1; 26 public GameObject lNotes2; 27 public GameObject lNotes3; 28 public GameObject lNotes4; 29 30 31 public Vector3 createPos; 32 33 public Vector3 spaceScale = new Vector3(4.0f, 4.0f, 0f); 34 35 void Start() 36 { 37 CreateStage(createPos); 38 39 createPos =new Vector3(0, 100, 0); 40 } 41 42 void CreateStage(Vector3 pos) 43 { 44 45 Vector3 originPos = pos; 46 string stageTextData = textAsset.text; 47 48 foreach (char c in stageTextData) 49 { 50 51 GameObject obj = null; 52 53 if (c == '!') 54 { 55 obj = Instantiate(cNotes0, pos, Quaternion.identity) as GameObject; 56 obj.name = cNotes0.name; 57 pos.x += 2*obj.transform.lossyScale.x; 58 } 59 else if (c == '"') 60 { 61 obj = Instantiate(cNotes1, pos, Quaternion.identity) as GameObject; 62 obj.name = cNotes1.name; 63 pos.x += 2 * obj.transform.lossyScale.x; 64 } 65 else if (c == '#') 66 { 67 obj = Instantiate(cNotes2, pos, Quaternion.identity) as GameObject; 68 obj.name = cNotes2.name; 69 pos.x += 2 * obj.transform.lossyScale.x; 70 } 71 else if (c == '$') 72 { 73 obj = Instantiate(cNotes3, pos, Quaternion.identity) as GameObject; 74 obj.name = cNotes3.name; 75 pos.x += 2 * obj.transform.lossyScale.x; 76 } 77 else if (c == '%') 78 { 79 obj = Instantiate(cNotes4, pos, Quaternion.identity) as GameObject; 80 obj.name = cNotes4.name; 81 pos.x += 2 * obj.transform.lossyScale.x; 82 } 83 else if (c == 'q') 84 { 85 obj = Instantiate(sNotes0, pos, Quaternion.identity) as GameObject; 86 obj.name = sNotes0.name; 87 pos.x += 2*obj.transform.lossyScale.x; 88 } 89 else if (c == 'w') 90 { 91 obj = Instantiate(sNotes1, pos, Quaternion.identity) as GameObject; 92 obj.name = sNotes1.name; 93 pos.x += 2 * obj.transform.lossyScale.x; 94 } 95 else if (c == 'e') 96 { 97 obj = Instantiate(sNotes2, pos, Quaternion.identity) as GameObject; 98 obj.name = sNotes2.name; 99 pos.x += 2 * obj.transform.lossyScale.x; 100 } 101 else if (c == 'r') 102 { 103 obj = Instantiate(sNotes3, pos, Quaternion.identity) as GameObject; 104 obj.name = sNotes3.name; 105 pos.x += 2 * obj.transform.lossyScale.x; 106 } 107 else if (c == 't') 108 { 109 obj = Instantiate(sNotes4, pos, Quaternion.identity) as GameObject; 110 obj.name = sNotes4.name; 111 pos.x += 2 * obj.transform.lossyScale.x; 112 } 113 else if (c == 'a') 114 { 115 obj = Instantiate(lNotes0, pos, Quaternion.identity) as GameObject; 116 obj.name = lNotes0.name; 117 pos.x += 2*obj.transform.lossyScale.x; 118 } 119 else if (c == 's') 120 { 121 obj = Instantiate(lNotes1, pos, Quaternion.identity) as GameObject; 122 obj.name = lNotes1.name; 123 pos.x += 2 * obj.transform.lossyScale.x; 124 } 125 else if (c == 'd') 126 { 127 obj = Instantiate(lNotes2, pos, Quaternion.identity) as GameObject; 128 obj.name = lNotes2.name; 129 pos.x += 2 * obj.transform.lossyScale.x; 130 } 131 else if (c == 'f') 132 { 133 obj = Instantiate(lNotes3, pos, Quaternion.identity) as GameObject; 134 obj.name = lNotes3.name; 135 pos.x += 2 * obj.transform.lossyScale.x; 136 } 137 else if (c == 'g') 138 { 139 obj = Instantiate(lNotes4, pos, Quaternion.identity) as GameObject; 140 obj.name = lNotes4.name; 141 pos.x += 2 * obj.transform.lossyScale.x; 142 } 143 144 else if (c == '\n') 145 { 146 pos.y -= spaceScale.y; 147 pos.x = originPos.x; 148 } 149 else if (c == ' ') 150 { 151 pos.x += spaceScale.x; 152 } 153 } 154 } 155}

###試したこと
このページの内容に書かれているコードを付け加えようかと思っています。
###補足情報(言語/FW/ツール等のバージョンなど)
unityのバージョンは5.6.1f1です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

普通にカウント用の変数を作ってforeachの中で判定・命名すればよいかと。

C#

1using UnityEngine; 2using System.Collections; 3 4[ExecuteInEditMode] 5public class StageCreator : MonoBehaviour 6{ 7 8 public TextAsset textAsset; 9 10 //配置するオブジェクト 11 //tag=common 12 public GameObject cNotes0; 13 public GameObject cNotes1; 14 public GameObject cNotes2; 15 public GameObject cNotes3; 16 public GameObject cNotes4; 17 //tag=slash 18 public GameObject sNotes0; 19 public GameObject sNotes1; 20 public GameObject sNotes2; 21 public GameObject sNotes3; 22 public GameObject sNotes4; 23 //tag=long 24 public GameObject lNotes0; 25 public GameObject lNotes1; 26 public GameObject lNotes2; 27 public GameObject lNotes3; 28 public GameObject lNotes4; 29 30 31 public Vector3 createPos; 32 33 public Vector3 spaceScale = new Vector3(4.0f, 4.0f, 0f); 34 35 private string const PREFAB_NAME_PREFIX = "hoge"; //プレハブ名の固定値 36 private int const PREFAB_NAME_COUNT_MAX = 5; //プレハブ名の番号の最大値(この値を超えていたら0に戻る) 37 38 void Start() 39 { 40 CreateStage(createPos); 41 42 createPos =new Vector3(0, 100, 0); 43 } 44 45 void CreateStage(Vector3 pos) 46 { 47 48 Vector3 originPos = pos; 49 string stageTextData = textAsset.text; 50 51 int nameCount = 0; //プレハブ命名用 52 53 foreach (char c in stageTextData) 54 { 55 56 GameObject obj = null; 57 58 if (c == '!') 59 { 60 obj = Instantiate(cNotes0, pos, Quaternion.identity) as GameObject; 61 pos.x += 2*obj.transform.lossyScale.x; 62 } 63 else if (c == '"') 64 { 65 obj = Instantiate(cNotes1, pos, Quaternion.identity) as GameObject; 66 pos.x += 2 * obj.transform.lossyScale.x; 67 } 68 else if (c == '#') 69 { 70 obj = Instantiate(cNotes2, pos, Quaternion.identity) as GameObject; 71 pos.x += 2 * obj.transform.lossyScale.x; 72 } 73 else if (c == '$') 74 { 75 obj = Instantiate(cNotes3, pos, Quaternion.identity) as GameObject; 76 pos.x += 2 * obj.transform.lossyScale.x; 77 } 78 else if (c == '%') 79 { 80 obj = Instantiate(cNotes4, pos, Quaternion.identity) as GameObject; 81 pos.x += 2 * obj.transform.lossyScale.x; 82 } 83 else if (c == 'q') 84 { 85 obj = Instantiate(sNotes0, pos, Quaternion.identity) as GameObject; 86 pos.x += 2*obj.transform.lossyScale.x; 87 } 88 else if (c == 'w') 89 { 90 obj = Instantiate(sNotes1, pos, Quaternion.identity) as GameObject; 91 pos.x += 2 * obj.transform.lossyScale.x; 92 } 93 else if (c == 'e') 94 { 95 obj = Instantiate(sNotes2, pos, Quaternion.identity) as GameObject; 96 pos.x += 2 * obj.transform.lossyScale.x; 97 } 98 else if (c == 'r') 99 { 100 obj = Instantiate(sNotes3, pos, Quaternion.identity) as GameObject; 101 pos.x += 2 * obj.transform.lossyScale.x; 102 } 103 else if (c == 't') 104 { 105 obj = Instantiate(sNotes4, pos, Quaternion.identity) as GameObject; 106 pos.x += 2 * obj.transform.lossyScale.x; 107 } 108 else if (c == 'a') 109 { 110 obj = Instantiate(lNotes0, pos, Quaternion.identity) as GameObject; 111 pos.x += 2*obj.transform.lossyScale.x; 112 } 113 else if (c == 's') 114 { 115 obj = Instantiate(lNotes1, pos, Quaternion.identity) as GameObject; 116 pos.x += 2 * obj.transform.lossyScale.x; 117 } 118 else if (c == 'd') 119 { 120 obj = Instantiate(lNotes2, pos, Quaternion.identity) as GameObject; 121 pos.x += 2 * obj.transform.lossyScale.x; 122 } 123 else if (c == 'f') 124 { 125 obj = Instantiate(lNotes3, pos, Quaternion.identity) as GameObject; 126 pos.x += 2 * obj.transform.lossyScale.x; 127 } 128 else if (c == 'g') 129 { 130 obj = Instantiate(lNotes4, pos, Quaternion.identity) as GameObject; 131 pos.x += 2 * obj.transform.lossyScale.x; 132 } 133 134 else if (c == '\n') 135 { 136 pos.y -= spaceScale.y; 137 pos.x = originPos.x; 138 } 139 else if (c == ' ') 140 { 141 pos.x += spaceScale.x; 142 } 143 144 //オブジェクト命名 145 if (obj != null) { 146 nameCount ++; 147 if (nameCount > PREFAB_NAME_COUNT_MAX) nameCount = 0; 148 obj.name = PREFAB_NAME_PREFIX + nameCount; 149 } 150 } 151 } 152}

48行目のcher型をstring型に変更したいとのことですが、単純に変換したいなら
string str = c.ToString();で変換出来ます。
ただ負荷を考慮すると、現状のように単なる比較がしたいだけならcharのままの方がいいです。

投稿2017/08/24 01:01

sakura_hana

総合スコア11425

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

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

daytime

2017/08/26 16:03

実装出来ました ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問