TileSetScenesCollectionSource
Наследует: TileSetSource < Resource < RefCounted < Object
Предоставляет набор сцен в виде плиток для ресурса TileSet.
Описание
При размещении на TileMapLayer плитки из TileSetScenesCollectionSource автоматически создают экземпляр связанной сцены в позиции ячейки в TileMapLayer.
Сцены создаются как дочерние элементы TileMapLayer после того, как он попадает в дерево, в конце кадра (их создание откладывается). Если вы добавляете/удаляете плитку сцены в TileMapLayer, которая уже находится внутри дерева, TileMapLayer автоматически создаст/освободит сцену соответствующим образом.
Примечание: Все плитки сцены занимают один слот плитки и вместо этого используют альтернативный идентификатор плитки для определения индекса сцены. 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))
# The assigned 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));
// The assigned 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) 🔗
Создает тайл на основе сцены из заданной сцены.
Возвращает новый сгенерированный уникальный идентификатор.
int get_next_scene_tile_id() const 🔗
Возвращает идентификатор сцены, который вернет следующий вызов create_scene_tile().
bool get_scene_tile_display_placeholder(id: int) const 🔗
Возвращает, отображает ли тайл-сцена с идентификатором id заполнитель в редакторе.
int get_scene_tile_id(index: int) 🔗
Возвращает идентификатор фрагмента сцены для фрагмента сцены по адресу index.
PackedScene get_scene_tile_scene(id: int) const 🔗
Возвращает ресурс PackedScene тайла-сцены с id.
Возвращает количество плиток сцены, имеющихся в этом источнике TileSet.
bool has_scene_tile_id(id: int) 🔗
Возвращает, имеет ли этот источник TileSet тайл-сцены с id.
void remove_scene_tile(id: int) 🔗
Удалить тайл-сцену с id.
void set_scene_tile_display_placeholder(id: int, display_placeholder: bool) 🔗
Устанавливает, должен ли тайл-сцена с id отображать заполнитель в редакторе. Это может быть полезно для сцен, которые не видны.
void set_scene_tile_id(id: int, new_id: int) 🔗
Изменяет идентификатор тайла-сцены с id на new_id. Это завершится ошибкой, если уже есть тайл с идентификатором, равным new_id.
void set_scene_tile_scene(id: int, packed_scene: PackedScene) 🔗
Назначает ресурс PackedScene тайлу-сцене с id. Это не сработает, если сцена не расширяет CanvasItem, поскольку для размещения сцены на TileMapLayer необходимы свойства позиционирования.