1

私はこのチュートリアルをやっています

私がやっていることは、"Tiled" でタイル マップを作成することです。チュートリアルのすべての手順に従いましたが、ビルドして実行すると、ロード画面の直後にアプリがクラッシュします。次のエラーでクラッシュします。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'tile map has no objects object layer'

または、ブレークポイントを使用すると、次の場所で中断します。

NSAssert(objectGroup != nil, @"tile map has no objects object layer");

自分の .tmx ファイルとダウンロードしたチュートリアルのファイルを比較したところ、一致しました。関連する .tmx コード:

<objectgroup name="Objects" width="15" height="13">
<object name="SpawnPoint" x="35" y="36"/>
</objectgroup>

これは、オブジェクト レイヤーのオブジェクトとしてカウントされると思いますよね? SpawnPoint オブジェクトも Tiled の正しいレイヤーにあると確信しています。これが私のinitメソッドです(アプリがクラッシュするメソッド):

-(id) init
{
if( (self=[super init]) ) {
    CCTMXObjectGroup *objectGroup = [_tileMap objectGroupNamed:@"Objects"];
    NSAssert(objectGroup != nil, @"tile map has no objects object layer");

    NSDictionary *spawnPoint = [objectGroup objectNamed:@"SpawnPoint"];
    int x = [spawnPoint[@"x"] integerValue];
    int y = [spawnPoint[@"y"] integerValue];

    _player = [CCSprite spriteWithFile:@"player.png"];
    _player.position = ccp(x,y);

    [self addChild:_player];

    self.tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"TileBomb.tmx"];
    self.background = [_tileMap layerNamed:@"Background"];
    self.meta = [_tileMap layerNamed:@"Meta"];
    _meta.visible = NO;
    [self addChild:_tileMap z:-1];
    self.touchEnabled = YES;


}
return self;
}

これがなぜ起こっているのか、そしてそれを修正する方法を誰かが理解していますか?

4

1 に答える 1