質問編集履歴

5

たいとる修正

2016/01/09 06:34

投稿

doron
doron

スコア152

test CHANGED
@@ -1 +1 @@
1
- [unity] 実行するとずっと読み込み状態が続く。。
1
+ [unity] 実行するとずっと読み込み状態が続く。。(問題箇所特定済み。原因不明)
test CHANGED
@@ -253,3 +253,5 @@
253
253
  分かっている事
254
254
 
255
255
  *高度計算のとこで問題は発生していない模様
256
+
257
+ *構造物補完ルーチンのfor文に問題あり。

4

問題箇所特定

2016/01/09 06:34

投稿

doron
doron

スコア152

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

加筆

2016/01/08 06:39

投稿

doron
doron

スコア152

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

たいとる修正

2016/01/08 06:27

投稿

doron
doron

スコア152

test CHANGED
@@ -1 +1 @@
1
- [unity] 地形自動生成したい。でもクラッシュする。
1
+ [unity] 実行するとずっと読み込み状態が続く
test CHANGED
File without changes

1

タイトル修正、コメント加筆

2016/01/07 07:16

投稿

doron
doron

スコア152

test CHANGED
@@ -1 +1 @@
1
- [地形自動生成] unityにて実行時、読み込みが永遠に続きます。
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
- public GameObject[] mns;
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