よくある質問

Pocket

EditorでのMap編集について

矩形ツールやバケツツールで広範囲を塗りつぶすのに時間がかかる

原因

  • タイルにColliderが設定されている場合、配置時にColliderも生成するためUnity内部の生成処理の関係で時間がかかってしまう。

対処方法

  • 今後の課題として改善策を検討中です。
  • 暫定的な対処方法としましては、塗りつぶす範囲が広くなりすぎないようご注意ください。

Colliderの数が多くなるとSceneビューでの操作が処理落ちしてしまう

原因

  • 1タイルに1Colliderを割り当てているため、Colliderが多くなるとGizmoを描画するだけでも高負荷になってしまうため。

対処方法

  • Sceneビューの「Gizmos」ドロップダウンをクリックし、表示しているCollider2D(BoxCollider2DやPolygonCollider2Dなど)のチェックを外す。

Sceneビューのグリッド表示とMapのグリッド表示がかぶって見にくい

対処方法

  • Sceneビューの「Gizmos」ドロップダウンをクリックし、「Show Grid」のチェックを外す。

Map描画について

タイルの境界に目立つ線が描画される

原因

  • 描画の際にタイルテクスチャの隣のピクセルを拾ってしまうため。

対処方法

テクスチャの設定

TileSetに割り当てているテクスチャの設定を確認してください

  1. Projectウィンドウより割り当てているテクスチャを選択
  2. Generate MipMapのチェックを外す
  3. Filter Modeを「Point」にする
  4. Formatを「Truecolor」に変更する。
    (Unity 5.5以降では、CompressionをNoneにする)

アンチエイリアシングを無効化

アンチエイリアシングが有効になっている場合は無効にしてください。

  1. メニューの「Editor」>「Project Settiings」>「Quality」を選択
  2. Inspectorウィンドウで「Anti Aliasing」を「Disabled」に変更。
    (使用するLevels全てで変更する必要があります)

Gameウィンドウのアスペクト指定

画面サイズが奇数になると意図しないタイル境界の描画が発生する場合があります。
ここでは、UnityエディタのGameウィンドウ上で発生する場合の対処方法を説明します。
(ビルドした場合もウィンドウのサイズを変更可能にしていたり縦幅を奇数値固定にしていると発生する点に注意してください。)

  • 実際のゲームサイズを想定してピクセルサイズ指定で固定する
  • または、Statsボタンを押し、Screenの高さを確認しながら奇数にならないようにウィンドウサイズを調整する。

ピクセルパーフェクトで表示されない

原因

  • タイルの境界線の緩和のため、UV座標を内側にずらしているため
  • スクリーンサイズやカメラの位置などをピクセルパーフェクトに合わせるスクリプトが別途必要
    (これらのスクリプトについては現在サポートしておりません)

対処方法

内側にずらす処理を無効にする

無効にする場合、「タイルの境界に目立つ線が描画される」の設定を行わないと目立つ線が発生しやすくなる点に注意してください。

  1. ProjectウィンドウでTileSetを選択
  2. Inspectorウィンドウで、Tileを選択。
  3. TileのUv Shift Insideを0に変更。

タイルのテクスチャ座標がずれて描画される

原因

  • テクスチャ画像の各辺の幅とは別にUnity内部で拡縮したサイズのテクスチャを管理しているため
    • NPOTに対応していない環境で、テクスチャのサイズが2のべき乗サイズではない場合
    • テクスチャ設定のMax Sizeが画像のサイズよりも小さく設定されている場合

対処方法

TileSetに割り当てているテクスチャを確認してください

  1. 割り当てているテクスチャの各辺の幅を2のべき乗サイズ(256、512、1024など)にする
    (キャンバスサイズ変更の際は、タイルの位置設定の関係上、左上基準でサイズを変更してください)
  2. Projectウィンドウより割り当てているテクスチャを選択
  3. Max Sizeが画像の幅よりも小さい場合は大きくする
  4. Sceneビューが更新されない場合はMapのRefreshボタンを押すか、一度Playボタンを押し実行状態にする

Batches(Draw call)が多くなってしまう

原因

  • 1つのメッシュに扱える頂点数に制限がある都合で、Nostlagiaでは 32 x 32タイルごとに1メッシュとするチャンクという単位でメッシュを管理しています。
    このチャンクもダイナミックバッチングの対象となっていますが、頂点数などの制限があるため、1チャンクに多数のタイルが配置されている場合はバッチされない可能性が高いです。
    詳しくは、Unityマニュアルのドローコールバッチングを参照してください。

[blogcard url=”https://docs.unity3d.com/Manual/DrawCallBatching.html”]

対処方法

  • 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を調節する。

レーティング(年齢制限等)を行う必要のあるコンテンツに使用できますか?

レーティング(年齢制限等)を行う必要のあるコンテンツにNostalgia 2はご利用いただけます。

ただし、使用した結果、コンテンツの表現内容に対してcaitsithwareは一切責任を負いません。