/// <summary>
    /// 创建基本的阻挡地形tile
    /// </summary>
    /// <param name="tile_data">tile数据</param>
    /// <param name="sprite_name"></param>
    /// <param name="sorting_layer_name"></param>
    /// <returns></returns>
    private GameObject _createTerrainBlockTile(mt.Tile tile_data, string sprite_name, string sorting_layer_name)
    {
        var obj = _createBasicTile(tile_data, sprite_name, sorting_layer_name);

        // add collider
        var collider_component = obj.AddComponent <BoxCollider2D>();

        collider_component.isTrigger = false;

        return(obj);
    }
    public GameObject CreatePlayer(mt.Tile tile_data)
    {
        var tile_player = tile_data as mt.Tile_Player;

        var obj = _createBasicTile(tile_data, tile_player.SpriteName, "Collide");

        // add collider
        var collider_component = obj.AddComponent <BoxCollider2D>();

        collider_component.isTrigger = true;

        return(obj);
    }
    /// <summary>
    /// 工厂方法
    /// 根据tile data创建对应的tile obj
    /// </summary>
    /// <param name="tile_data"></param>
    /// <returns></returns>
    public GameObject CreateTile(mt.Tile tile_data)
    {
        switch (tile_data.Type)
        {
        case mt.Tile.EType.Floor:
        {
            return(CreateFloor(tile_data));
        }

        case mt.Tile.EType.Wall:
        {
            return(CreateWall(tile_data));
        }

        case mt.Tile.EType.Water:
        {
            return(CreateWater(tile_data));
        }

        case mt.Tile.EType.Sky:
        {
            return(CreateSky(tile_data));
        }

        case mt.Tile.EType.Monster:
        {
            return(CreateMonster(tile_data));
        }

        case mt.Tile.EType.Player:
        {
            return(CreatePlayer(tile_data));
        }

        default:
            return(null);
        }
    }
    /// <summary>
    /// 创建基本的tile
    /// </summary>
    /// <param name="tile_data">tile数据</param>
    /// <param name="sprite_name"></param>
    /// <param name="sorting_layer_name"></param>
    /// <returns></returns>
    private GameObject _createBasicTile(mt.Tile tile_data, string sprite_name, string sorting_layer_name)
    {
        // create the gameobject
        var obj = new GameObject();

        // set the sprite
        var sprite_renderer = obj.AddComponent <SpriteRenderer> ();

        sprite_renderer.sprite = mt.SpriteSheetManager.Instance.GetSprite(sprite_name);

        // set the sorting layer
        sprite_renderer.sortingLayerName = sorting_layer_name;

        // set the tile data
        var tile_component = obj.AddComponent <TileComponent> ();

        tile_component.TileData = tile_data;

        // set the position
        obj.transform.localPosition = new Vector3(tile_data.Position.Col, tile_data.Position.Row, 0);

        return(obj);
    }
 /// <summary>
 /// 创建岩浆
 /// </summary>
 /// <param name="tile_data"></param>
 /// <returns></returns>
 public GameObject CreateWater(mt.Tile tile_data)
 {
     return(_createTerrainBlockTile(tile_data, "water_0", "Collide"));
 }
 /// <summary>
 /// 创建星空
 /// </summary>
 /// <param name="tile_data"></param>
 /// <returns></returns>
 public GameObject CreateSky(mt.Tile tile_data)
 {
     return(_createTerrainBlockTile(tile_data, "wall_13", "Collide"));
 }
 /// <summary>
 /// 创建地板
 /// </summary>
 /// <param name="tile_data"></param>
 /// <returns></returns>
 public GameObject CreateFloor(mt.Tile tile_data)
 {
     return(_createBasicTile(tile_data, "floor_0", "Floor"));
 }