Contents
EditorでのMap編集について
矩形ツールやバケツツールで広範囲を塗りつぶすのに時間がかかる
原因
- タイルにColliderが設定されている場合、配置時にColliderも生成するためUnity内部の生成処理の関係で時間がかかってしまう。
対処方法
- 今後の課題として改善策を検討中です。
- 暫定的な対処方法としましては、塗りつぶす範囲が広くなりすぎないようご注意ください。
1Mapのタイル配置数が多くなってくると編集時に処理落ちしてしまう
原因
- タイルにColliderが設定されている場合、1つのGameObjectにすべてのColliderを割り当てているためUnity内部の生成処理の関係で時間がかかってしまう。
対処方法
- 今後の課題として改善策を検討中です。
- 暫定的な対処方法としましては、1Mapのタイル数が多くなりすぎないよう適宜分割し、細切れのマップ別に編集してください。
Colliderの数が多くなるとSceneビューでの操作が処理落ちしてしまう
原因
- 1タイルに1Colliderを割り当てているため、Colliderが多くなるとGizmoを描画するだけでも高負荷になってしまうため。
対処方法
- Sceneビューの「Gizmos」ドロップダウンをクリックし、表示しているCollider2D(BoxCollider2DやPolygonCollider2Dなど)のチェックを外す。
Sceneビューのグリッド表示とMapのグリッド表示がかぶって見にくい
対処方法
- Sceneビューの「Gizmos」ドロップダウンをクリックし、「Show Grid」のチェックを外す。
Map描画について
タイルの境界に目立つ線が描画される
原因
- テクスチャの設定によっては、ラスタライズの際にタイルの隣のピクセルを拾ってしまうため。
対処方法
TileSetに割り当てているテクスチャの設定を確認してください
- Projectウィンドウより割り当てているテクスチャを選択
- Generate MipMapのチェックを外す
- Filter Modeを「Point」にする
タイルのテクスチャ座標がずれて描画される
原因
- テクスチャ画像の各辺の幅とは別にUnity内部で拡縮したサイズのテクスチャを管理しているため
- NPOTに対応していない環境で、テクスチャのサイズが2のべき乗サイズではない場合
- テクスチャ設定のMax Sizeが画像のサイズよりも小さく設定されている場合
対処方法
TileSetに割り当てているテクスチャを確認してください
- 割り当てているテクスチャの各辺の幅を2のべき乗サイズ(256、512、1024など)にする
(キャンバスサイズ変更の際は、タイルの位置設定の関係上、左上基準でサイズを変更してください) - Projectウィンドウより割り当てているテクスチャを選択
- Max Sizeが画像の幅よりも小さい場合は大きくする
- Sceneビューが更新されない場合はMapのRefreshボタンを押すか、一度Playボタンを押し実行状態にする
Batches(Draw call)が多くなってしまう
原因
- 1つのメッシュに扱える頂点数に制限がある都合で、Nostlagiaでは 32 x 32タイルごとに1メッシュとするチャンクという単位でメッシュを管理しています。
このチャンクもダイナミックバッチングの対象となっていますが、頂点数などの制限があるため、1チャンクに多数のタイルが配置されている場合はバッチされない可能性が高いです。
詳しくは、Unityマニュアルのドローコールバッチングを参照してください。
対処方法
- Nostalgiaでは、なるべくタイルをまとめたメッシュを作成しているため、基本的にはダイナミックバッチングに任せて問題ありません。
- ダイナミックバッチングの対象となるかどうかは、共通のMaterialを使用している限り描画順と頂点数によるため、
もし配置しているタイルが少ないMapが複数ある場合は、描画順を見直すとバッチングされる可能性が高くなります。
SetPass callsが多くなってしまう
原因
- NostalgiaではMapが複数あってもTileSetが参照しているMaterialが共通であればSetPass callsが少なく済むようになっています。
逆に、多数のMaterialを用意し共有しなければそれだけSetPass callsは増えます。 - 背景マップと前景マップの間にキャラクタースプライトなどによる別Materialがある場合は、描画順の関係でSetPass callsが増えます。
対処方法
- タイルのテクスチャはなるべく1枚にまとめて、共有できるMaterialを用意する。
- 共通のMaterialを使用しているMapはなるべく連続して描画されるようにSorting LayerやOrder in Layerを調節する。