回答編集履歴

1

追記

2018/09/09 03:19

投稿

fiveHundred
fiveHundred

スコア9803

test CHANGED
@@ -81,3 +81,127 @@
81
81
 
82
82
 
83
83
  とはいえ、上記ソースの(※)では配列を毎回新規作成(≠追加)してしまっているので、このままだと意図した通りに動作しないと思いますので、適宜修正してください。
84
+
85
+
86
+
87
+ ---
88
+
89
+
90
+
91
+ 追記:
92
+
93
+
94
+
95
+ > このようなプログラムを書いたのですが、 mesh.vertices = new Vector3[] {
96
+
97
+ > の中のposition1で未割り当てのローカル変数"position1"が使われましたと出てきて、コンパイルできません。
98
+
99
+
100
+
101
+ 提示のソースは「position『s』1」になっているので、単純に名前間違いだと思います。
102
+
103
+
104
+
105
+
106
+
107
+ > またこのコードでposition1の配列は意図する通りの配列になっていますか?
108
+
109
+
110
+
111
+ ``positions1 = positions;``としても、positions1がpositionsになるだけで追加になりません。
112
+
113
+ また、そもそも配列は基本的に要素を追加することは出来ません。
114
+
115
+ 最初に必要な分の配列を生成しておくか、Listを使ってください。
116
+
117
+
118
+
119
+ なお、「意図する通りの配列」になっているかどうかは、VisualStudioなどにあるデバッガを使うか、Debug.Log()で出力させれば、確認することができます。
120
+
121
+
122
+
123
+
124
+
125
+ > ほかに良い書き方があれば教えてほしいです。
126
+
127
+
128
+
129
+ 「最初に必要な分の配列を生成しておく」場合、以下のようになります。
130
+
131
+
132
+
133
+ ```C#
134
+
135
+ Vector3[] positions = new Vector3[10 * 4];
136
+
137
+ for (int a = 0; a < 10; a++)
138
+
139
+ {
140
+
141
+ positions[a * 4] = new Vector3(0f, 1f+a, 0f);
142
+
143
+ positions[a * 4 + 1] = new Vector3(0f, 1f+a, 1f);
144
+
145
+ positions[a * 4 + 2] = new Vector3(1f, 1f+a, 1f);
146
+
147
+ positions[a * 4 + 3] = new Vector3(1f, 1f+a, 0f);
148
+
149
+ }
150
+
151
+
152
+
153
+ // 以降は変更前のソースと同じ
154
+
155
+ // positions1は使う必要なし
156
+
157
+ ```
158
+
159
+
160
+
161
+ 「Listを使う」場合、以下のようになります。
162
+
163
+
164
+
165
+ ```C#
166
+
167
+ List<Vector3> positionsList = new List<Vector3>();
168
+
169
+ for (int a = 0; a < 10; a++)
170
+
171
+ {
172
+
173
+ // 個別に追加する場合(例)
174
+
175
+ // positionsList.Add(new Vector3(0f, 1f, 0f));
176
+
177
+
178
+
179
+ // まとめて追加する場合は、AddRange()が使える
180
+
181
+ positionsList.AddRange(new Vector3[] {
182
+
183
+ new Vector3(0f, 1f+a, 0f),
184
+
185
+ new Vector3(0f, 1f+a, 1f),
186
+
187
+ new Vector3(1f, 1f+a, 1f),
188
+
189
+ new Vector3(1f, 1f+a, 0f),
190
+
191
+ });
192
+
193
+ }
194
+
195
+ // Listから配列に変換
196
+
197
+ Vector3[] positions = positionsList.ToArray();
198
+
199
+
200
+
201
+
202
+
203
+ // 以降は変更前のソースと同じ
204
+
205
+ // positions1は使う必要なし
206
+
207
+ ```