ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Tilemap类 参考

2D 瓦片地图组件 更多...

#include <Tilemap.h>

类 Tilemap 继承关系图:
RendererComponent Component

Public 成员函数

 Tilemap ()
 ~Tilemap () override
void onAfterDeserialize () override
 反序列化完成后回调(Prefab::apply 逐组件调用一次,字段已写入)。 用于重建"直写字段绕过了 setter、无法自动触发的引擎状态"(如精灵纹理加载)。
void onFieldChanged (const std::string &fieldName) override
 检查器直接写反射字段后回调(字段名)。用于绕过 setter 的直写完成后 重新同步引擎状态(如 Box2D 刚体/形状)。默认无操作。
void onRender (SDL_Renderer *renderer, const CameraComponent *camera) const override
 按相机绘制网格(RendererComponent 纯虚实现)
SDL_FRect getGlobalBounds () override
 世界坐标轴对齐包围盒(覆盖整个网格)
void setTexturePath (const std::string &path)
const std::string & getTexturePath () const
void setTileSize (int w, int h)
 设置单个瓦片纹理像素尺寸
int getTileWidth () const
int getTileHeight () const
void setGridSize (int cols, int rows)
 调整网格行列数(保留重叠部分数据)
int getGridWidth () const
int getGridHeight () const
void setTileWorldSize (const Vector2 &size)
 每格世界尺寸(默认=瓦片像素)
const Vector2 & getTileWorldSize () const
void setTile (int col, int row, int tileId)
 放置瓦片(-1 擦除)
int getTile (int col, int row) const
 读取瓦片(越界返回 -1)
void clear ()
 全部擦除
bool isEmpty () const
 是否全空
int getTileCount () const
 当前瓦片数量(非空格)
const std::string & getGridData () const
void setGridData (const std::string &data)
 反序列化用:解析外部字符串(含尺寸头)
Public 成员函数 继承自 RendererComponent
 RendererComponent ()
 ~RendererComponent () override=default
void onAttach () override
void onDetach () override
void onDestroy () override
int getZIndex () const
 渲染层级,值越大越靠上
bool isVisible () const
 是否可见
void setZIndex (int zIndex)
void setVisible (bool isVisible)
Public 成员函数 继承自 Component
 Component ()
virtual ~Component ()=default
virtual void onCreate ()
 Component (const Component &)=delete
Component & operator= (const Component &)=delete
 Component (Component &&)=delete
Component & operator= (Component &&)=delete
GameObject * getOwner () const
bool isRegistered () const
uint64_t getUuid () const
 组件持久 ID(随 .scene 序列化,是 ComponentRef<T> 引用字段的寻址依据)
void setUuid (uint64_t uuid)
 直接设置组件 ID(仅引擎反序列化/索引维护使用;正常流程由构造函数随机分配)

友元

class TilemapDrawTool

额外继承的成员函数

Protected 成员函数 继承自 Component
void setRegistered (bool registered)
Protected 属性 继承自 RendererComponent
int m_zIndex = 0
bool m_isVisible = true
Protected 属性 继承自 Component
GameObject * m_owner = nullptr
bool m_isRegistered = false
uint64_t m_uuid = 0
 持久 ID(构造时随机分配;0 仅在序列化前尚未赋值时短暂存在)

详细描述

2D 瓦片地图组件

把一张瓦片集纹理(sprite sheet)按 m_gridWidth×m_gridHeight 网格铺排成地图。 网格左上角对齐 GameObject 的 Transform 位置,每个格子从纹理裁取对应瓦片绘制。

瓦片 id 语义: -1 = 空格(不绘制) ≥0 = 瓦片索引,映射到纹理的 (id % 每行数, id / 每行数) 源矩形

网格数据以反射字符串字段 m_gridData 持久化(逗号分隔的瓦片 id,序列化器原生 支持 std::string),运行时用 m_tiles(std::vector<int>)高效存储;onAfterDeserialize 把 m_gridData 解析到 m_tiles。编辑器/脚本通过 setTile / resize 修改并自动同步 m_gridData。

构造及析构函数说明

◆ Tilemap()

Tilemap ( )

◆ ~Tilemap()

~Tilemap ( )
override

成员函数说明

◆ clear()

void clear ( )

全部擦除

◆ getGlobalBounds()

SDL_FRect getGlobalBounds ( )
overridevirtual

世界坐标轴对齐包围盒(覆盖整个网格)

实现了 RendererComponent.

◆ getGridData()

const std::string & getGridData ( ) const
inline

◆ getGridHeight()

int getGridHeight ( ) const
inline

◆ getGridWidth()

int getGridWidth ( ) const
inline

◆ getTexturePath()

const std::string & getTexturePath ( ) const
inline

◆ getTile()

int getTile ( int col,
int row ) const

读取瓦片(越界返回 -1)

◆ getTileCount()

int getTileCount ( ) const

当前瓦片数量(非空格)

◆ getTileHeight()

int getTileHeight ( ) const
inline

◆ getTileWidth()

int getTileWidth ( ) const
inline

◆ getTileWorldSize()

const Vector2 & getTileWorldSize ( ) const
inline

◆ isEmpty()

bool isEmpty ( ) const

是否全空

◆ onAfterDeserialize()

void onAfterDeserialize ( )
overridevirtual

反序列化完成后回调(Prefab::apply 逐组件调用一次,字段已写入)。 用于重建"直写字段绕过了 setter、无法自动触发的引擎状态"(如精灵纹理加载)。

重载 Component .

◆ onFieldChanged()

void onFieldChanged ( const std::string & fieldName)
overridevirtual

检查器直接写反射字段后回调(字段名)。用于绕过 setter 的直写完成后 重新同步引擎状态(如 Box2D 刚体/形状)。默认无操作。

重载 Component .

◆ onRender()

void onRender ( SDL_Renderer * renderer,
const CameraComponent * camera ) const
overridevirtual

按相机绘制网格(RendererComponent 纯虚实现)

实现了 RendererComponent.

◆ setGridData()

void setGridData ( const std::string & data)

反序列化用:解析外部字符串(含尺寸头)

◆ setGridSize()

void setGridSize ( int cols,
int rows )

调整网格行列数(保留重叠部分数据)

◆ setTexturePath()

void setTexturePath ( const std::string & path)

◆ setTile()

void setTile ( int col,
int row,
int tileId )

放置瓦片(-1 擦除)

◆ setTileSize()

void setTileSize ( int w,
int h )

设置单个瓦片纹理像素尺寸

◆ setTileWorldSize()

void setTileWorldSize ( const Vector2 & size)

每格世界尺寸(默认=瓦片像素)

◆ TilemapDrawTool

friend class TilemapDrawTool
friend

该类的文档由以下文件生成: