Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
TileSetScenesCollectionSource
繼承: TileSetSource < Resource < RefCounted < Object
以圖塊的形式向 TileSet 資源暴露一組場景。
說明
當放置在 TileMapLayer 上時,來自 TileSetScenesCollectionSource 的圖塊將自動在 TileMapLayer 中單元格的位置上實例化相關場景。
TileMapLayer 進入樹後,會在影格末尾將這些場景實例化為其子節點(延遲建立)。如果在 TileMapLayer 中新增/移除已經在樹內的場景圖塊,TileMapLayer 將自動實例化/釋放相應的場景。
注意:場景圖塊佔用同一個圖塊槽,使用備用圖塊 ID 來標識場景索引。TileSetSource.get_tiles_count() 將始終回傳 1。使用 get_scene_tiles_count() 取得 TileSetScenesCollectionSource 中的場景數量。
如果想在 TileMapLayer 中尋找給定圖塊的場景路徑,請使用此程式碼:
var source_id = tile_map_layer.get_cell_source_id(Vector2i(x, y))
if source_id > -1:
var scene_source = tile_map_layer.tile_set.get_source(source_id)
if scene_source is TileSetScenesCollectionSource:
var alt_id = tile_map_layer.get_cell_alternative_tile(Vector2i(x, y))
# 分配的 PackedScene。
var scene = scene_source.get_scene_tile_scene(alt_id)
int sourceId = tileMapLayer.GetCellSourceId(new Vector2I(x, y));
if (sourceId > -1)
{
TileSetSource source = tileMapLayer.TileSet.GetSource(sourceId);
if (source is TileSetScenesCollectionSource sceneSource)
{
int altId = tileMapLayer.GetCellAlternativeTile(new Vector2I(x, y));
// 分配的 PackedScene。
PackedScene scene = sceneSource.GetSceneTileScene(altId);
}
}
方法
create_scene_tile(packed_scene: PackedScene, id_override: int = -1) |
|
get_next_scene_tile_id() const |
|
get_scene_tile_display_placeholder(id: int) const |
|
get_scene_tile_id(index: int) |
|
get_scene_tile_scene(id: int) const |
|
has_scene_tile_id(id: int) |
|
void |
remove_scene_tile(id: int) |
void |
set_scene_tile_display_placeholder(id: int, display_placeholder: bool) |
void |
set_scene_tile_id(id: int, new_id: int) |
void |
set_scene_tile_scene(id: int, packed_scene: PackedScene) |
方法說明
int create_scene_tile(packed_scene: PackedScene, id_override: int = -1) 🔗
從給定的場景建立基於場景的圖塊。
返回新生成的唯一 ID。
int get_next_scene_tile_id() const 🔗
返回後續呼叫 create_scene_tile() 時會返回的場景 ID。
bool get_scene_tile_display_placeholder(id: int) const 🔗
返回 ID 為 id 的場景圖塊是否在編輯器中顯示占點陣圖。
int get_scene_tile_id(index: int) 🔗
返回索引為 index 的場景圖塊的場景圖塊 ID。
PackedScene get_scene_tile_scene(id: int) const 🔗
返回 ID 為 id 的場景圖塊的 PackedScene 資源。
返回該 TileSet 源中場景圖塊的數量。
bool has_scene_tile_id(id: int) 🔗
返回該 TileSet 源是否包含 ID 為 id 的場景圖塊。
void remove_scene_tile(id: int) 🔗
移除 ID 為 id 的場景圖塊。
void set_scene_tile_display_placeholder(id: int, display_placeholder: bool) 🔗
設定 ID 為 id 的場景圖塊是否應該在編輯器中顯示為預留位置。對不可見的場景可能有用。
void set_scene_tile_id(id: int, new_id: int) 🔗
將場景圖塊的 ID 從 id 改為 new_id。如果已經存在 ID 為 new_id 的圖塊則會失敗。
void set_scene_tile_scene(id: int, packed_scene: PackedScene) 🔗
將 PackedScene 資源分配給 ID 為 id 的場景圖塊。如果該場景擴充的不是 CanvasItem 則會失敗,因為將場景放置到 TileMapLayer 上需要位置屬性。