回答編集履歴
1
追加情報に沿った案を追記
test
CHANGED
@@ -309,3 +309,45 @@
|
|
309
309
|
|
310
310
|
|
311
311
|
![結果比較](26b29d0c163f2fe3ae2b986956f5f519.png)
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
#追記
|
316
|
+
|
317
|
+
タイル1個ごとに頂点が4個生成されますので、頂点総数は130×130×4=67600個となります。頂点インデックスの形式がデフォルトの16ビット整数ですと65535個までしか扱えず、途切れてしまったものと思われます。
|
318
|
+
|
319
|
+
さしあたり、[indexFormat](https://docs.unity3d.com/ScriptReference/Mesh-indexFormat.html)を[Rendering.IndexFormat.UInt32](https://docs.unity3d.com/ScriptReference/Rendering.IndexFormat.UInt32.html)に切り替えてみてはいかがでしょうか?
|
320
|
+
|
321
|
+
```C#
|
322
|
+
|
323
|
+
void GenerateMesh()
|
324
|
+
|
325
|
+
{
|
326
|
+
|
327
|
+
MeshData data = new MeshData(tiles);
|
328
|
+
|
329
|
+
mesh = new Mesh();
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
// 頂点インデックスのフォーマットを32ビット整数に変更する
|
334
|
+
|
335
|
+
mesh.indexFormat = IndexFormat.UInt32;
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
mesh.vertices = data.vertices.ToArray();
|
340
|
+
|
341
|
+
mesh.triangles = data.triangles.ToArray();
|
342
|
+
|
343
|
+
mesh.RecalculateNormals();
|
344
|
+
|
345
|
+
mesh.RecalculateBounds();
|
346
|
+
|
347
|
+
Graphics.DrawMesh(mesh, Vector3.zero, Quaternion.identity, material, 0);
|
348
|
+
|
349
|
+
}
|
350
|
+
|
351
|
+
```
|
352
|
+
|
353
|
+
リファレンスによると一部の環境では32ビットインデックスをサポートしないそうですので、それらにも対応させたい場合はメッシュを複数個に分割する必要がありそうですね。
|