質問編集履歴
5
たいとる修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[unity] 実行するとずっと読み込み状態が続く。。
|
1
|
+
[unity] 実行するとずっと読み込み状態が続く。。(問題箇所特定済み。原因不明)
|
test
CHANGED
@@ -253,3 +253,5 @@
|
|
253
253
|
分かっている事
|
254
254
|
|
255
255
|
*高度計算のとこで問題は発生していない模様
|
256
|
+
|
257
|
+
*構造物補完ルーチンのfor文に問題あり。
|
4
問題箇所特定
test
CHANGED
File without changes
|
test
CHANGED
@@ -196,6 +196,8 @@
|
|
196
196
|
|
197
197
|
//構造物を(mnに)まとめる
|
198
198
|
|
199
|
+
//ここで問題発生ーーーーーーーーーーー
|
200
|
+
|
199
201
|
for (int y = 0; y <= 8192; y++) {
|
200
202
|
|
201
203
|
for (int x = 0; x <= 8192; x++) {
|
@@ -224,6 +226,8 @@
|
|
224
226
|
|
225
227
|
}
|
226
228
|
|
229
|
+
//ーーーーーーーーーーーーーーーーーここまで
|
230
|
+
|
227
231
|
//構造物生成
|
228
232
|
|
229
233
|
for (int j=0;j!=mn.Count;j++) {
|
3
加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -243,3 +243,9 @@
|
|
243
243
|
をunity上で実行しようとしてもずっと読み込み状態のままで止まってしまいます。無限ループでも作ってしまったのでしょうか(-▫︎-)
|
244
244
|
|
245
245
|
解決方法、正解コードでも書いていただくと嬉しい限りです。
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
分かっている事
|
250
|
+
|
251
|
+
*高度計算のとこで問題は発生していない模様
|
2
たいとる修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[unity]
|
1
|
+
[unity] 実行するとずっと読み込み状態が続く。。
|
test
CHANGED
File without changes
|
1
タイトル修正、コメント加筆
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
[地形自動生成
|
1
|
+
[unity] 地形自動生成したい。でもクラッシュする。
|
test
CHANGED
@@ -14,21 +14,37 @@
|
|
14
14
|
|
15
15
|
public class finT: MonoBehaviour {
|
16
16
|
|
17
|
+
|
18
|
+
|
17
|
-
|
19
|
+
//水とか草原とか地面プレハブ入れ
|
18
20
|
|
19
21
|
public GameObject[] objs;
|
20
22
|
|
23
|
+
//山とか城とかの構造物プレハブ入れ
|
24
|
+
|
25
|
+
public GameObject[] mns;
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
//高度map
|
30
|
+
|
21
31
|
int[,] hight=new int[8193,8193];
|
22
32
|
|
33
|
+
//構造物生成時の空き地管理
|
34
|
+
|
23
35
|
bool[,] akiti=new bool[8193,8193];
|
24
36
|
|
37
|
+
|
38
|
+
|
39
|
+
//構造物(mn)とその座標(vs)
|
40
|
+
|
25
41
|
ArrayList mn = new ArrayList();
|
26
42
|
|
27
43
|
ArrayList vs = new ArrayList ();
|
28
44
|
|
45
|
+
|
46
|
+
|
29
|
-
|
47
|
+
//オブジェクト生成時の間隔
|
30
|
-
|
31
|
-
|
32
48
|
|
33
49
|
public float aida=0.5f;
|
34
50
|
|
@@ -38,7 +54,7 @@
|
|
38
54
|
|
39
55
|
void Start () {
|
40
56
|
|
41
|
-
|
57
|
+
//四隅の高度を決めておく
|
42
58
|
|
43
59
|
hight [0, 0] = Random.Range (0, 100);
|
44
60
|
|
@@ -50,7 +66,7 @@
|
|
50
66
|
|
51
67
|
|
52
68
|
|
53
|
-
|
69
|
+
//城が建つ中央の高度を固定
|
54
70
|
|
55
71
|
for (int y = 4095; y <= 4097; y++) {
|
56
72
|
|
@@ -72,8 +88,6 @@
|
|
72
88
|
|
73
89
|
for (int y = 0; y <= 8192; y += i) {
|
74
90
|
|
75
|
-
|
76
|
-
|
77
91
|
for (int x = 0; x <= 8192; x += i) {
|
78
92
|
|
79
93
|
if(0==(y/i)%2){
|
@@ -126,13 +140,15 @@
|
|
126
140
|
|
127
141
|
}
|
128
142
|
|
143
|
+
//高度マップを基に地面生成
|
144
|
+
|
129
145
|
for (byte y = 0; y <= 8192; y++) {
|
130
146
|
|
131
147
|
for (byte x = 0; x <= 8192; x++) {
|
132
148
|
|
133
149
|
GameObject obj=null;
|
134
150
|
|
135
|
-
|
151
|
+
//草村
|
136
152
|
|
137
153
|
if (hight [x, y] > 55) {
|
138
154
|
|
@@ -140,12 +156,16 @@
|
|
140
156
|
|
141
157
|
}
|
142
158
|
|
159
|
+
//砂浜
|
160
|
+
|
143
161
|
if (hight [x, y] < 50) {
|
144
162
|
|
145
163
|
obj = objs [0];
|
146
164
|
|
147
165
|
}
|
148
166
|
|
167
|
+
//海
|
168
|
+
|
149
169
|
if (50<=hight [x, y] && hight [x, y] <= 55) {
|
150
170
|
|
151
171
|
obj = objs [2];
|
@@ -158,7 +178,7 @@
|
|
158
178
|
|
159
179
|
}
|
160
180
|
|
161
|
-
|
181
|
+
//城と城の空き地確保。(城サイズは3×3)
|
162
182
|
|
163
183
|
mn.Add (mns [1]);
|
164
184
|
|
@@ -174,20 +194,26 @@
|
|
174
194
|
|
175
195
|
}
|
176
196
|
|
177
|
-
|
197
|
+
//構造物を(mnに)まとめる
|
178
198
|
|
179
199
|
for (int y = 0; y <= 8192; y++) {
|
180
200
|
|
181
201
|
for (int x = 0; x <= 8192; x++) {
|
182
202
|
|
203
|
+
//空き地が空いていたら
|
204
|
+
|
183
205
|
if (akiti [x, y] == false) {
|
184
206
|
|
185
207
|
if (hight [x, y] > 80) {
|
186
208
|
|
209
|
+
//山補完
|
210
|
+
|
187
211
|
mn.Add (mns [0]);
|
188
212
|
|
189
213
|
vs.Add (new Vector3 (x * aida - 2f, y * aida - 2f, 0));
|
190
214
|
|
215
|
+
//ここもう空き地じゃないよ
|
216
|
+
|
191
217
|
akiti [x, y] = true;
|
192
218
|
|
193
219
|
}
|
@@ -198,7 +224,7 @@
|
|
198
224
|
|
199
225
|
}
|
200
226
|
|
201
|
-
|
227
|
+
//構造物生成
|
202
228
|
|
203
229
|
for (int j=0;j!=mn.Count;j++) {
|
204
230
|
|