我正在开发一个基础的iPhone游戏,需要一个单屏幕瓦片图。这部分内容并不复杂。由于我有C语言的背景,所以我的当前解决方案类似于:
typedef struct _Tile {
NSString *type;
} Tile;
@interface Map {
Tile mapData[MAP_TILE_MAX_X][MAP_TILE_MAX_Y];
}
这个方法可以正常工作,但我想知道是否有一种更加“正确”的方式来通过Objective-C处理。如果我采用Objective-C的方法,情况将如下:我会创建一个基本的Tile类来保存基本瓷砖属性,然后为特定的瓷砖类型(例如@interface Water : Tile {}
)创建子类。这将允许我还拥有特定于瓷砖的逻辑。例如:Tile类可以有一个“think”方法,该方法将执行任何必要的逻辑。在我的Water子类中,如果玩家被淹没,这可能涉及创建涟漪效果。
那么我的问题是:
- 在这种情况下使用C结构是否可行?如果不行,我的Obj-C方法是否正确?
- 如果我创建一个基本的Tile类,并使用子类来表示特定的Tile类型,那么我如何动态地实例化每个Tile子类(假设我有一个包含类型“water”的NSString,我需要实例化Water类)?