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.

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

create_scene_tile(packed_scene: PackedScene, id_override: int = -1)

int

get_next_scene_tile_id() const

bool

get_scene_tile_display_placeholder(id: int) const

int

get_scene_tile_id(index: int)

PackedScene

get_scene_tile_scene(id: int) const

int

get_scene_tiles_count()

bool

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 資源。


int get_scene_tiles_count() 🔗

返回該 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 上需要位置屬性。