Files
godot-docs-l10n/classes/zh_CN/class_tilemap.rst

1063 lines
68 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. DO NOT EDIT THIS FILE!!!
.. Generated automatically from Godot engine sources.
.. Generator: https://github.com/godotengine/godot/tree/4.2/doc/tools/make_rst.py.
.. XML source: https://github.com/godotengine/godot/tree/4.2/doc/classes/TileMap.xml.
.. _class_TileMap:
TileMap
=======
**继承:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
基于 2D 图块的地图节点。
.. rst-class:: classref-introduction-group
描述
----
基于 2D 图块的地图节点。Tilemap图块地图使用 :ref:`TileSet<class_TileSet>`\ 其中包含了图块的列表用于创建基于栅格的地图。TileMap 可以有若干图层,可以将图块布局在彼此之上。
出于性能原因,所有 TileMap 更新都会在一帧结束时进行批处理。值得注意的是,这意味着 :ref:`TileSetScenesCollectionSource<class_TileSetScenesCollectionSource>` 中的场景图块可能会在其父级之后初始化。
要提前强制更新,请调用 :ref:`update_internals<class_TileMap_method_update_internals>`\ 。
.. rst-class:: classref-introduction-group
教程
----
- :doc:`使用 Tilemap <../tutorials/2d/using_tilemaps>`
- `2D 平台跳跃演示 <https://godotengine.org/asset-library/asset/120>`__
- `2D 等轴演示 <https://godotengine.org/asset-library/asset/112>`__
- `2D 六边形演示 <https://godotengine.org/asset-library/asset/111>`__
- `2D 导航 Astar 演示 <https://godotengine.org/asset-library/asset/519>`__
- `2D 角色扮演游戏演示 <https://godotengine.org/asset-library/asset/520>`__
- `2D 运动学角色演示 <https://godotengine.org/asset-library/asset/113>`__
.. rst-class:: classref-reftable-group
属性
----
.. table::
:widths: auto
+----------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`collision_animatable<class_TileMap_property_collision_animatable>` | ``false`` |
+----------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`VisibilityMode<enum_TileMap_VisibilityMode>` | :ref:`collision_visibility_mode<class_TileMap_property_collision_visibility_mode>` | ``0`` |
+----------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`VisibilityMode<enum_TileMap_VisibilityMode>` | :ref:`navigation_visibility_mode<class_TileMap_property_navigation_visibility_mode>` | ``0`` |
+----------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`int<class_int>` | :ref:`rendering_quadrant_size<class_TileMap_property_rendering_quadrant_size>` | ``16`` |
+----------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`TileSet<class_TileSet>` | :ref:`tile_set<class_TileMap_property_tile_set>` | |
+----------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
.. rst-class:: classref-reftable-group
方法
----
.. table::
:widths: auto
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`_tile_data_runtime_update<class_TileMap_private_method__tile_data_runtime_update>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`TileData<class_TileData>` tile_data **)** |virtual| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`_use_tile_data_runtime_update<class_TileMap_private_method__use_tile_data_runtime_update>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)** |virtual| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`add_layer<class_TileMap_method_add_layer>` **(** :ref:`int<class_int>` to_position **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`clear<class_TileMap_method_clear>` **(** **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`clear_layer<class_TileMap_method_clear_layer>` **(** :ref:`int<class_int>` layer **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`erase_cell<class_TileMap_method_erase_cell>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`fix_invalid_tiles<class_TileMap_method_fix_invalid_tiles>` **(** **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`force_update<class_TileMap_method_force_update>` **(** :ref:`int<class_int>` layer=-1 **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_cell_alternative_tile<class_TileMap_method_get_cell_alternative_tile>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i<class_Vector2i>` | :ref:`get_cell_atlas_coords<class_TileMap_method_get_cell_atlas_coords>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_cell_source_id<class_TileMap_method_get_cell_source_id>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`TileData<class_TileData>` | :ref:`get_cell_tile_data<class_TileMap_method_get_cell_tile_data>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i<class_Vector2i>` | :ref:`get_coords_for_body_rid<class_TileMap_method_get_coords_for_body_rid>` **(** :ref:`RID<class_RID>` body **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_layer_for_body_rid<class_TileMap_method_get_layer_for_body_rid>` **(** :ref:`RID<class_RID>` body **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Color<class_Color>` | :ref:`get_layer_modulate<class_TileMap_method_get_layer_modulate>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`get_layer_name<class_TileMap_method_get_layer_name>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`get_layer_navigation_map<class_TileMap_method_get_layer_navigation_map>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_layer_y_sort_origin<class_TileMap_method_get_layer_y_sort_origin>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_layer_z_index<class_TileMap_method_get_layer_z_index>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_layers_count<class_TileMap_method_get_layers_count>` **(** **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`RID<class_RID>` | :ref:`get_navigation_map<class_TileMap_method_get_navigation_map>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i<class_Vector2i>` | :ref:`get_neighbor_cell<class_TileMap_method_get_neighbor_cell>` **(** :ref:`Vector2i<class_Vector2i>` coords, :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` neighbor **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`TileMapPattern<class_TileMapPattern>` | :ref:`get_pattern<class_TileMap_method_get_pattern>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` coords_array **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i[]<class_Vector2i>` | :ref:`get_surrounding_cells<class_TileMap_method_get_surrounding_cells>` **(** :ref:`Vector2i<class_Vector2i>` coords **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i[]<class_Vector2i>` | :ref:`get_used_cells<class_TileMap_method_get_used_cells>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i[]<class_Vector2i>` | :ref:`get_used_cells_by_id<class_TileMap_method_get_used_cells_by_id>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=-1 **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Rect2i<class_Rect2i>` | :ref:`get_used_rect<class_TileMap_method_get_used_rect>` **(** **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_layer_enabled<class_TileMap_method_is_layer_enabled>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_layer_navigation_enabled<class_TileMap_method_is_layer_navigation_enabled>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_layer_y_sort_enabled<class_TileMap_method_is_layer_y_sort_enabled>` **(** :ref:`int<class_int>` layer **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i<class_Vector2i>` | :ref:`local_to_map<class_TileMap_method_local_to_map>` **(** :ref:`Vector2<class_Vector2>` local_position **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2i<class_Vector2i>` | :ref:`map_pattern<class_TileMap_method_map_pattern>` **(** :ref:`Vector2i<class_Vector2i>` position_in_tilemap, :ref:`Vector2i<class_Vector2i>` coords_in_pattern, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Vector2<class_Vector2>` | :ref:`map_to_local<class_TileMap_method_map_to_local>` **(** :ref:`Vector2i<class_Vector2i>` map_position **)** |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`move_layer<class_TileMap_method_move_layer>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` to_position **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`notify_runtime_tile_data_update<class_TileMap_method_notify_runtime_tile_data_update>` **(** :ref:`int<class_int>` layer=-1 **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`remove_layer<class_TileMap_method_remove_layer>` **(** :ref:`int<class_int>` layer **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_cell<class_TileMap_method_set_cell>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=0 **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_cells_terrain_connect<class_TileMap_method_set_cells_terrain_connect>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` cells, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_cells_terrain_path<class_TileMap_method_set_cells_terrain_path>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` path, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_enabled<class_TileMap_method_set_layer_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` enabled **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_modulate<class_TileMap_method_set_layer_modulate>` **(** :ref:`int<class_int>` layer, :ref:`Color<class_Color>` modulate **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_name<class_TileMap_method_set_layer_name>` **(** :ref:`int<class_int>` layer, :ref:`String<class_String>` name **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_navigation_enabled<class_TileMap_method_set_layer_navigation_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` enabled **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_navigation_map<class_TileMap_method_set_layer_navigation_map>` **(** :ref:`int<class_int>` layer, :ref:`RID<class_RID>` map **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_y_sort_enabled<class_TileMap_method_set_layer_y_sort_enabled>` **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` y_sort_enabled **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_y_sort_origin<class_TileMap_method_set_layer_y_sort_origin>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` y_sort_origin **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_layer_z_index<class_TileMap_method_set_layer_z_index>` **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` z_index **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_navigation_map<class_TileMap_method_set_navigation_map>` **(** :ref:`int<class_int>` layer, :ref:`RID<class_RID>` map **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_pattern<class_TileMap_method_set_pattern>` **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` position, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`update_internals<class_TileMap_method_update_internals>` **(** **)** |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
信号
----
.. _class_TileMap_signal_changed:
.. rst-class:: classref-signal
**changed** **(** **)**
该 TileMap 的 :ref:`TileSet<class_TileSet>` 发生改变时发出。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
枚举
----
.. _enum_TileMap_VisibilityMode:
.. rst-class:: classref-enumeration
enum **VisibilityMode**:
.. _class_TileMap_constant_VISIBILITY_MODE_DEFAULT:
.. rst-class:: classref-enumeration-constant
:ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **VISIBILITY_MODE_DEFAULT** = ``0``
使用调试设置确定可见性。
.. _class_TileMap_constant_VISIBILITY_MODE_FORCE_HIDE:
.. rst-class:: classref-enumeration-constant
:ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **VISIBILITY_MODE_FORCE_HIDE** = ``2``
始终隐藏。
.. _class_TileMap_constant_VISIBILITY_MODE_FORCE_SHOW:
.. rst-class:: classref-enumeration-constant
:ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **VISIBILITY_MODE_FORCE_SHOW** = ``1``
始终显示。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
属性说明
--------
.. _class_TileMap_property_collision_animatable:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **collision_animatable** = ``false``
.. rst-class:: classref-property-setget
- void **set_collision_animatable** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **is_collision_animatable** **(** **)**
如果启用TileMap 将看到它的碰撞同步到物理周期并将其碰撞类型从静态更改为运动学。这是创建基于 TileMap 的移动的平台所必需的。
\ **注意:**\ 启用 :ref:`collision_animatable<class_TileMap_property_collision_animatable>` 可能会对性能产生一个很小的影响,只有在该 TileMap 正在移动并且有碰撞的图块时才这样做。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_property_collision_visibility_mode:
.. rst-class:: classref-property
:ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **collision_visibility_mode** = ``0``
.. rst-class:: classref-property-setget
- void **set_collision_visibility_mode** **(** :ref:`VisibilityMode<enum_TileMap_VisibilityMode>` value **)**
- :ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **get_collision_visibility_mode** **(** **)**
显示或隐藏该 TileMap 的碰撞形状。如果设置为 :ref:`VISIBILITY_MODE_DEFAULT<class_TileMap_constant_VISIBILITY_MODE_DEFAULT>`\ ,则取决于调试设置“显示碰撞”。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_property_navigation_visibility_mode:
.. rst-class:: classref-property
:ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **navigation_visibility_mode** = ``0``
.. rst-class:: classref-property-setget
- void **set_navigation_visibility_mode** **(** :ref:`VisibilityMode<enum_TileMap_VisibilityMode>` value **)**
- :ref:`VisibilityMode<enum_TileMap_VisibilityMode>` **get_navigation_visibility_mode** **(** **)**
显示或隐藏该 TileMap 的导航网格。如果设置为 :ref:`VISIBILITY_MODE_DEFAULT<class_TileMap_constant_VISIBILITY_MODE_DEFAULT>`\ ,则取决于调试设置“显示导航”。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_property_rendering_quadrant_size:
.. rst-class:: classref-property
:ref:`int<class_int>` **rendering_quadrant_size** = ``16``
.. rst-class:: classref-property-setget
- void **set_rendering_quadrant_size** **(** :ref:`int<class_int>` value **)**
- :ref:`int<class_int>` **get_rendering_quadrant_size** **(** **)**
TileMap 的象限大小。象限是在单个画布项上一起绘制的一组图块,用于优化。\ :ref:`rendering_quadrant_size<class_TileMap_property_rendering_quadrant_size>` 定义的是形成象限的正方形的边长,使用地图坐标系。因此,默认象限大小将 ``16 * 16 = 256`` 个图块组合到了一起。
Y 排序的图层不使用象限大小,这种图层中的图块会按 Y 位置分组。
\ **注意:**\ 象限是根据地图坐标系创建的,“正方形”的象限在 TileMap 的局部坐标系中可能并不是正方形。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_property_tile_set:
.. rst-class:: classref-property
:ref:`TileSet<class_TileSet>` **tile_set**
.. rst-class:: classref-property-setget
- void **set_tileset** **(** :ref:`TileSet<class_TileSet>` value **)**
- :ref:`TileSet<class_TileSet>` **get_tileset** **(** **)**
指定的 :ref:`TileSet<class_TileSet>` 图块集。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
方法说明
--------
.. _class_TileMap_private_method__tile_data_runtime_update:
.. rst-class:: classref-method
void **_tile_data_runtime_update** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`TileData<class_TileData>` tile_data **)** |virtual|
会使用 TileMap 内部即将使用的 TileData 对象来调用,从而实现运行时修改。
这个方法被调用的前提是:实现了 :ref:`_use_tile_data_runtime_update<class_TileMap_private_method__use_tile_data_runtime_update>`\ ,并且对给定的图块坐标 ``coords`` 和层 ``layer`` 返回 ``true``
\ **警告:**\ 该 ``tile_data`` 对象的子资源和 TileSet 中的子资源是一样的。对它们进行修改可能会影响整个 TileSet。请确保制作这些资源的副本再进行修改。
\ **注意:**\ 如果 ``tile_data`` 对象的属性要随时间变化,请使用 :ref:`notify_runtime_tile_data_update<class_TileMap_method_notify_runtime_tile_data_update>` 来通知该 TileMap 它需要更新。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_private_method__use_tile_data_runtime_update:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **_use_tile_data_runtime_update** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)** |virtual|
如果位于层 ``layer`` 坐标 ``coords`` 的图块需要运行时更新,则应返回 ``true``\ 。
\ **警告:**\ 请确保这个函数只在需要时返回 ``true``\ 。任何在没有需要的情况下在运行时处理的图块都将导致显著的性能损失。
\ **注意:**\ 如果该函数的结果发生变化,请使用 :ref:`notify_runtime_tile_data_update<class_TileMap_method_notify_runtime_tile_data_update>` 通知 TileMap 它需要更新。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_add_layer:
.. rst-class:: classref-method
void **add_layer** **(** :ref:`int<class_int>` to_position **)**
在数组中的给定位置 ``to_position`` 添加层。如果 ``to_position`` 为负数,则位置从结尾处开始计数,\ ``-1`` 会把层添加在数组的末尾。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_clear:
.. rst-class:: classref-method
void **clear** **(** **)**
清除所有单元格。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_clear_layer:
.. rst-class:: classref-method
void **clear_layer** **(** :ref:`int<class_int>` layer **)**
清除给定图层上的所有单元格。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_erase_cell:
.. rst-class:: classref-method
void **erase_cell** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords **)**
擦除图层 ``layer`` 上位于 ``coords`` 坐标的单元格。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_fix_invalid_tiles:
.. rst-class:: classref-method
void **fix_invalid_tiles** **(** **)**
清除图块集中不存在的单元格。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_force_update:
.. rst-class:: classref-method
void **force_update** **(** :ref:`int<class_int>` layer=-1 **)**
*已废弃。*\ 见 :ref:`notify_runtime_tile_data_update<class_TileMap_method_notify_runtime_tile_data_update>`:ref:`update_internals<class_TileMap_method_update_internals>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_cell_alternative_tile:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_cell_alternative_tile** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const|
返回 ``layer`` 层中位于坐标 ``coords`` 单元格的图块备选 ID。如果 ``use_proxies````false``\ ,则会忽略该 :ref:`TileSet<class_TileSet>` 的图块代理,返回原始的备选标识符。见 :ref:`TileSet.map_tile_proxy<class_TileSet_method_map_tile_proxy>`\ 。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_cell_atlas_coords:
.. rst-class:: classref-method
:ref:`Vector2i<class_Vector2i>` **get_cell_atlas_coords** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const|
返回 ``layer`` 层中位于坐标 ``coords`` 单元格的图块图集坐标 ID。如果 ``use_proxies````false``\ ,则会忽略该 :ref:`TileSet<class_TileSet>` 的图块代理,返回原始的备选标识符。见 :ref:`TileSet.map_tile_proxy<class_TileSet_method_map_tile_proxy>`\ 。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_cell_source_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_cell_source_id** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const|
返回 ``layer`` 层中位于坐标 ``coords`` 单元格的图块源 ID。如果该单元格不存在则返回 ``-1``\ 。
如果 ``use_proxies````false``\ ,则会忽略该 :ref:`TileSet<class_TileSet>` 的图块代理,返回原始的备选标识符。见 :ref:`TileSet.map_tile_proxy<class_TileSet_method_map_tile_proxy>`\ 。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_cell_tile_data:
.. rst-class:: classref-method
:ref:`TileData<class_TileData>` **get_cell_tile_data** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`bool<class_bool>` use_proxies=false **)** |const|
返回与给定单元格关联的 :ref:`TileData<class_TileData>` 对象,如果单元格不存在或者不是 :ref:`TileSetAtlasSource<class_TileSetAtlasSource>` 则返回 ``null``\ 。
如果 ``layer`` 为负,则从最后一个图层开始访问。
如果 ``use_proxies````false``\ ,则会忽略 :ref:`TileSet<class_TileSet>` 的图块代理,返回原始的备选标识符。见 :ref:`TileSet.map_tile_proxy<class_TileSet_method_map_tile_proxy>`\ 。
::
func get_clicked_tile_power():
var clicked_cell = tile_map.local_to_map(tile_map.get_local_mouse_position())
var data = tile_map.get_cell_tile_data(0, clicked_cell)
if data:
return data.get_custom_data("power")
else:
return 0
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_coords_for_body_rid:
.. rst-class:: classref-method
:ref:`Vector2i<class_Vector2i>` **get_coords_for_body_rid** **(** :ref:`RID<class_RID>` body **)**
返回给定物理物体 RID 对应图块的坐标。与图块发生碰撞时,可以通过 :ref:`KinematicCollision2D.get_collider_rid<class_KinematicCollision2D_method_get_collider_rid>` 获取该 RID。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layer_for_body_rid:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_layer_for_body_rid** **(** :ref:`RID<class_RID>` body **)**
返回给定物理物体 RID 对应图块的 TileMap 图层。与图块发生碰撞时,可以通过 :ref:`KinematicCollision2D.get_collider_rid<class_KinematicCollision2D_method_get_collider_rid>` 获取该 RID。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layer_modulate:
.. rst-class:: classref-method
:ref:`Color<class_Color>` **get_layer_modulate** **(** :ref:`int<class_int>` layer **)** |const|
返回 TileMap 图层的调制颜色。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layer_name:
.. rst-class:: classref-method
:ref:`String<class_String>` **get_layer_name** **(** :ref:`int<class_int>` layer **)** |const|
返回 TileMap 图层的名称。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layer_navigation_map:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **get_layer_navigation_map** **(** :ref:`int<class_int>` layer **)** |const|
返回当前分配给指定 TileMap ``layer``:ref:`NavigationServer2D<class_NavigationServer2D>` 导航地图 :ref:`RID<class_RID>`\ 。
默认情况下TileMap 为第一个 TileMap 层,使用默认的 :ref:`World2D<class_World2D>` 导航地图。对于每个附加的 TileMap 层,都会为附加层创建一个新的导航地图。
为了使 :ref:`NavigationAgent2D<class_NavigationAgent2D>` 在 TileMap 层导航地图之间切换,使用 :ref:`NavigationAgent2D.set_navigation_map<class_NavigationAgent2D_method_set_navigation_map>` 和从 :ref:`get_navigation_map<class_TileMap_method_get_navigation_map>` 接收的导航地图。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layer_y_sort_origin:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_layer_y_sort_origin** **(** :ref:`int<class_int>` layer **)** |const|
返回 TileMap 图层的 Y 排序原点。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layer_z_index:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_layer_z_index** **(** :ref:`int<class_int>` layer **)** |const|
返回 TileMap 图层的 Z 索引值。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_layers_count:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_layers_count** **(** **)** |const|
返回 TileMap 图层的数量。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_navigation_map:
.. rst-class:: classref-method
:ref:`RID<class_RID>` **get_navigation_map** **(** :ref:`int<class_int>` layer **)** |const|
:ref:`get_layer_navigation_map<class_TileMap_method_get_layer_navigation_map>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_neighbor_cell:
.. rst-class:: classref-method
:ref:`Vector2i<class_Vector2i>` **get_neighbor_cell** **(** :ref:`Vector2i<class_Vector2i>` coords, :ref:`CellNeighbor<enum_TileSet_CellNeighbor>` neighbor **)** |const|
返回与位于坐标 ``coords`` 的单元格相邻的单元格,方向由 ``neighbor`` 表示。这个方法会考虑 TileMap 的不同布局。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_pattern:
.. rst-class:: classref-method
:ref:`TileMapPattern<class_TileMapPattern>` **get_pattern** **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` coords_array **)**
根据给定的图层和单元格新建 :ref:`TileMapPattern<class_TileMapPattern>`\ 。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_surrounding_cells:
.. rst-class:: classref-method
:ref:`Vector2i[]<class_Vector2i>` **get_surrounding_cells** **(** :ref:`Vector2i<class_Vector2i>` coords **)**
返回与 ``coords`` 处的单元格相邻的所有单元格的列表。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_used_cells:
.. rst-class:: classref-method
:ref:`Vector2i[]<class_Vector2i>` **get_used_cells** **(** :ref:`int<class_int>` layer **)** |const|
返回 :ref:`Vector2i<class_Vector2i>` 数组,其中存放的是给定图层中所有包含图块的单元格的位置。空单元格的源标识符等于 -1、图集坐标标识符为 ``Vector2(-1, -1)``\ 、备选标识符为 -1。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_used_cells_by_id:
.. rst-class:: classref-method
:ref:`Vector2i[]<class_Vector2i>` **get_used_cells_by_id** **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=-1 **)** |const|
返回 :ref:`Vector2i<class_Vector2i>` 数组,其中存放的是给定图层中所有包含图块的单元格的位置。可以根据源(\ ``source_id``\ )、图集坐标(\ ``atlas_coords``\ )、备选 ID\ ``alternative_tile``\ )进行过滤。
如果某个参数为默认值,则该参数不会用于单元格的过滤。因此,如果所有参数都使用默认值,则返回的结果与 :ref:`get_used_cells<class_TileMap_method_get_used_cells>` 相同。
空单元格的源标识符等于 -1、图集坐标标识符为 ``Vector2(-1, -1)``\ 、备选标识符为 -1。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_get_used_rect:
.. rst-class:: classref-method
:ref:`Rect2i<class_Rect2i>` **get_used_rect** **(** **)** |const|
返回该地图的包围矩形,包围所有图层中的已使用(非空)的图块。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_is_layer_enabled:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_layer_enabled** **(** :ref:`int<class_int>` layer **)** |const|
返回某个图层是否已启用。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_is_layer_navigation_enabled:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_layer_navigation_enabled** **(** :ref:`int<class_int>` layer **)** |const|
返回是否启用图层的内置导航区块生成。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_is_layer_y_sort_enabled:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_layer_y_sort_enabled** **(** :ref:`int<class_int>` layer **)** |const|
返回某个图层是否会对图块进行 Y 排序。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_local_to_map:
.. rst-class:: classref-method
:ref:`Vector2i<class_Vector2i>` **local_to_map** **(** :ref:`Vector2<class_Vector2>` local_position **)** |const|
返回包含给定 ``local_position`` 的单元格地图坐标。如果 ``local_position`` 使用全局坐标,请考虑在传入这个方法前使用 :ref:`Node2D.to_local<class_Node2D_method_to_local>`\ 。另见 :ref:`map_to_local<class_TileMap_method_map_to_local>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_map_pattern:
.. rst-class:: classref-method
:ref:`Vector2i<class_Vector2i>` **map_pattern** **(** :ref:`Vector2i<class_Vector2i>` position_in_tilemap, :ref:`Vector2i<class_Vector2i>` coords_in_pattern, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)**
如果图案粘贴在 ``position_in_tilemap`` 坐标处(请参阅 :ref:`set_pattern<class_TileMap_method_set_pattern>`\ ),则返回 :ref:`TileMapPattern<class_TileMapPattern>` 中给定坐标 ``coords_in_pattern`` 对应的单元格坐标。该映射是必需的,因为在半偏移图块形状中,映射可能无法通过计算 ``position_in_tile_map + coords_in_pattern`` 工作。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_map_to_local:
.. rst-class:: classref-method
:ref:`Vector2<class_Vector2>` **map_to_local** **(** :ref:`Vector2i<class_Vector2i>` map_position **)** |const|
返回单元格的中心位置,使用 TileMap 的局部坐标。要将返回值转换为全局坐标,请使用 :ref:`Node2D.to_global<class_Node2D_method_to_global>`\ 。另见 :ref:`local_to_map<class_TileMap_method_local_to_map>`\ 。
\ **注意:**\ 可能与图块的可视位置没有对应关系,即忽略各个图块的 :ref:`TileData.texture_origin<class_TileData_property_texture_origin>` 属性。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_move_layer:
.. rst-class:: classref-method
void **move_layer** **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` to_position **)**
将索引 ``layer`` 处的图层移动到数组中给定的位置 ``to_position``\ 。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_notify_runtime_tile_data_update:
.. rst-class:: classref-method
void **notify_runtime_tile_data_update** **(** :ref:`int<class_int>` layer=-1 **)**
通知 TileMap 节点调用 :ref:`_use_tile_data_runtime_update<class_TileMap_private_method__use_tile_data_runtime_update>` 或 :ref:`_tile_data_runtime_update<class_TileMap_private_method__tile_data_runtime_update>` 将导致不同的结果。这将因此触发 TileMap 更新。
如果提供了 ``layer``\ ,则仅通知给定层的更改。出于性能原因,通常首选提供 ``layer`` 参数(如果适用)。
\ **警告:**\ 更新 TileMap 的计算成本很高,并且可能会影响性能。尝试限制该函数的调用次数,以避免不必要的更新。
\ **注意:**\ 这不会触发 TileMap 的直接更新,该更新将照常在帧结束时完成(除非你调用 :ref:`update_internals<class_TileMap_method_update_internals>`\ )。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_remove_layer:
.. rst-class:: classref-method
void **remove_layer** **(** :ref:`int<class_int>` layer **)**
移除索引为 ``layer`` 的层。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_cell:
.. rst-class:: classref-method
void **set_cell** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=0 **)**
设置位于层 ``layer`` 坐标为 ``coords`` 的单元格的图块标识符。\ :ref:`TileSet<class_TileSet>` 中的每个图块都由三部分进行标识:
- 源标识符 ``source_id`` 标识的是 :ref:`TileSetSource<class_TileSetSource>` 标识符。见 :ref:`TileSet.set_source_id<class_TileSet_method_set_source_id>`\
- 图集坐标标识符 ``atlas_coords`` 标识的是图集中的图块坐标(如果使用的是 :ref:`TileSetAtlasSource<class_TileSetAtlasSource>` 源)。如果使用的是 :ref:`TileSetScenesCollectionSource<class_TileSetScenesCollectionSource>`\ ,应该始终为 ``Vector2i(0, 0)``\
- 备选图块标识符 ``alternative_tile`` 标识的是图集中的图块备选项(如果使用的是 :ref:`TileSetAtlasSource<class_TileSetAtlasSource>` 源),如果使用的是 :ref:`TileSetScenesCollectionSource<class_TileSetScenesCollectionSource>` 则标识的是场景。
如果 ``source_id````-1``\ 、\ ``atlas_coords````Vector2i(-1, -1)````alternative_tile````-1``\ ,则会擦除该单元格。擦除后的单元格中,\ **所有**\ 标识符都会自动设为对应的无效值,即 ``-1``\ 、\ ``Vector2i(-1, -1)````-1``\ 。
如果 ``layer`` 为负数,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_cells_terrain_connect:
.. rst-class:: classref-method
void **set_cells_terrain_connect** **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` cells, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)**
更新 ``cells`` 坐标数组中的所有单元格,以便它们将给定的 ``terrain`` 用于给定的 ``terrain_set``\ 。如果一个更新的单元格与其相邻单元格之一具有相同的地形,则该函数会尝试将两者连接起来。如果需要创建正确的地形过渡,该函数可能会更新相邻的图块。
如果 ``ignore_empty_terrains`` 为真,则在尝试为给定地形约束找到最合适的图块时,空地形将被忽略。
如果 ``layer`` 为负,则从最后一个图层开始访问。
\ **注意:**\ 要正常工作,这个方法需要 TileMap 的 TileSet 设置了具有所有必需地形组合的地形。否则,可能会产生意想不到的结果。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_cells_terrain_path:
.. rst-class:: classref-method
void **set_cells_terrain_path** **(** :ref:`int<class_int>` layer, :ref:`Vector2i[]<class_Vector2i>` path, :ref:`int<class_int>` terrain_set, :ref:`int<class_int>` terrain, :ref:`bool<class_bool>` ignore_empty_terrains=true **)**
更新 ``path`` 坐标数组中的所有单元格,以便它们将给定的 ``terrain`` 用于给定的 ``terrain_set``\ 。该函数还将连接路径中具有相同地形的两个连续单元格。如果需要创建正确的地形过渡,该函数可能会更新相邻的图块。
如果 ``ignore_empty_terrains`` 为真,则在尝试为给定地形约束找到最合适的图块时将忽略空地形。
如果 ``layer`` 为负,则从最后一个图层开始访问。
\ **注意:**\ 要正常工作,这个方法需要 TileMap 的 TileSet 设置了具有所有必需地形组合的地形。否则,可能会产生意想不到的结果。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_enabled:
.. rst-class:: classref-method
void **set_layer_enabled** **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` enabled **)**
启用或禁用图层 ``layer``\ 。被禁用的图层根本不会被处理(没有渲染、物理等)。
如果 ``layer`` 为负数,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_modulate:
.. rst-class:: classref-method
void **set_layer_modulate** **(** :ref:`int<class_int>` layer, :ref:`Color<class_Color>` modulate **)**
设置图层的颜色。该颜色会与图块的颜色以及 TileMap 的调制色相乘。
如果 ``layer`` 为负,则逆序访问图层。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_name:
.. rst-class:: classref-method
void **set_layer_name** **(** :ref:`int<class_int>` layer, :ref:`String<class_String>` name **)**
设置图层的名称。主要在编辑器中使用。
如果 ``layer`` 为负,则逆序访问图层。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_navigation_enabled:
.. rst-class:: classref-method
void **set_layer_navigation_enabled** **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` enabled **)**
启用或禁用图层的内置导航区块生成。如果你需要使用 :ref:`NavigationRegion2D<class_NavigationRegion2D>` 节点根据 TileMap 烘焙导航区块,请禁用此项。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_navigation_map:
.. rst-class:: classref-method
void **set_layer_navigation_map** **(** :ref:`int<class_int>` layer, :ref:`RID<class_RID>` map **)**
:ref:`NavigationServer2D<class_NavigationServer2D>` 导航地图 :ref:`RID<class_RID>` 分配给指定的 TileMap ``layer``\ 。
默认情况下TileMap 为第一个 TileMap 层使用默认的 :ref:`World2D<class_World2D>` 导航地图。对于每个附加的 TileMap 层,都会为附加层创建一个新的导航地图。
为了使 :ref:`NavigationAgent2D<class_NavigationAgent2D>` 在 TileMap 层导航地图之间切换,使用 :ref:`NavigationAgent2D.set_navigation_map<class_NavigationAgent2D_method_set_navigation_map>` 和从 :ref:`get_navigation_map<class_TileMap_method_get_navigation_map>` 接收的导航地图。
如果 ``layer`` 为负,则从最后一个图层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_y_sort_enabled:
.. rst-class:: classref-method
void **set_layer_y_sort_enabled** **(** :ref:`int<class_int>` layer, :ref:`bool<class_bool>` y_sort_enabled **)**
启用或禁用图层的 Y 排序。如果进行了 Y 排序,则该图层和 CanvasItem 节点的行为一致,会将其中的每个图块都进行 Y 排序。
Y 排序图层的 Z 索引一般应该和未 Y 排序的图层不同,否则未 Y 排序的图层会作为一个整体,和 Y 排序图层一起进行 Y 排序。通常不希望发生这样的行为。
如果 ``layer`` 为负,则逆序访问图层。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_y_sort_origin:
.. rst-class:: classref-method
void **set_layer_y_sort_origin** **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` y_sort_origin **)**
设置图层的 Y 排序原点。各个图块的 Y 排序原点值都会加上这个 Y 排序原点值。
用例是为图层冒充不同的高度级别。俯视角游戏比较有用。
如果 ``layer`` 为负,则逆序访问图层。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_layer_z_index:
.. rst-class:: classref-method
void **set_layer_z_index** **(** :ref:`int<class_int>` layer, :ref:`int<class_int>` z_index **)**
设置图层的 Z 索引值。各个图块的 Z 索引值都会加上这个 Z 索引。
如果 ``layer`` 为负,则逆序访问图层。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_navigation_map:
.. rst-class:: classref-method
void **set_navigation_map** **(** :ref:`int<class_int>` layer, :ref:`RID<class_RID>` map **)**
:ref:`set_layer_navigation_map<class_TileMap_method_set_layer_navigation_map>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_set_pattern:
.. rst-class:: classref-method
void **set_pattern** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` position, :ref:`TileMapPattern<class_TileMapPattern>` pattern **)**
将给定的 :ref:`TileMapPattern<class_TileMapPattern>` 粘贴到图块地图中的 ``position`` 位置和 ``layer`` 层。
如果 ``layer`` 为负,则从最后一层开始访问。
.. rst-class:: classref-item-separator
----
.. _class_TileMap_method_update_internals:
.. rst-class:: classref-method
void **update_internals** **(** **)**
触发 TileMap 的更新。通常不需要调用这个函数,因为 TileMap 节点的属性发生修改后会自动更新。
但是出于性能原因,会对这些更新进行分批,延迟到该帧的末尾执行。调用这个函数会强制 TileMap 立即进行更新。
\ **警告:**\ 更新 TileMap 的计算量很大,可能会影响性能。请尽量限制更新的次数和受影响的图块。
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
.. |const| replace:: :abbr:`const (本方法没有副作用。不会修改该实例的任何成员变量。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了在此处描述的参数外,还能够继续接受任意数量的参数。)`
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
.. |static| replace:: :abbr:`static (调用本方法无需实例,所以可以直接使用类名调用。)`
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效操作符。)`
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列标志构成的位掩码整数。)`