ぱふの自由帳

ぱふの技術ブログ。メインはUnity。気の向くままに書く...目標は週末を除く毎日更新。

Nostalgia 2の使い方メモ

概要

UnityのAssetStoreにあるNostalgia 2の使い方メモです。試行錯誤しているのでもっと簡単な方法があるかもしれません…知っている方は教えていただけると喜びます><。
公式ページはこちら

Map / Cell / Tile

  • Map…Nostalgia Map で作られるオブジェクト。名前から分かるようにMapを管理している。

  • Cell…Mapを1マス単位で管理している。3×4のMapであれば12のCellが存在する。

  • Tile…Cellに設定されているTileを指す。

ある箇所のTileにアタッチしたコンポーネントを読み込む

タイルの場所を元に読み込む方法として以下のような方法がある。

  1. 読み込む予定のTileにコライダーを付ける。
  2. コライダーを取得 -> コライダーからMapを取得 -> MapからCellを取得 -> CellからTileを取得 -> Tileにアタッチされているコンポーネントを読み込む
    文字だと分かりにくいのでコードも載せておきます。
Collider2D col = Physics2D.OverlapPoint(new Vector2(X, Y));
Map map = col.GetComponent<Map>();
Cell cell = map.GetCell (new Point2((int)X, (int)Y));
Tile tile = cell.tile;
Hoge hoge = tile.GetComponent<Hoge> ();

以下のやり方ではTileにアタッチされているコンポーネントが取得できないので注意。

Collider2D col = Physics2D.OverlapPoint(new Vector2(X, Y));
Hoge hoge = col.GetComponent<Hoge>();

Tile用の新しいコンポーネントを作成する

using UnityEngine;
using System.Collections;

namespace Nostalgia.Example
{
    [AddTileMenu("HogeHoge/PiyoPiyo")]
    public class A : TileComponent
    {
        ここに実行内容を記述する。
    }
}

上記のようにすればAdd Component -> HogeHoge -> PiyoPiyoとしてコンポーネントを追加できる。

未解決問題

  • TileSetのTileを選択する際に以下のようなエラーが出る
NullReferenceException: Object reference not set to an instance of an object
Nostalgia.Tile+<GetComponents>c__AnonStorey0.<>m__0 (Nostalgia.TileComponent
(以下略)
  • Import from sprite が重い。数が数百になるとスクロールが困難レベル。設計上の問題である可能性があるので解決方法があるかは不明。

おわり

もう少しチュートリアルが充実していれば嬉しいですね…スクリプトリファレンスが日本語なのでなんとか手探りで進んでいる状況です><;

初心者の方や熟練者の方を問わずTwitterのフォローお待ちしています…(`・ω・´) ヨロシクデス!