GridMap docs状态:
GridMaps使用一个MeshLibrary,其中包含一个图块列表:包含材质的网格,可选的碰撞和多余的元素。
如何获取和设置这些“额外元素”?
我想为move_speed
的每个图块分配一个MeshLibrary
属性,并在运行时从GridMap
访问它。
我尝试将以下脚本添加到Mesh
场景中的每个MeshLibrary
:
extends MeshInstance
export var move_speed = 0
在编辑器中,我为每个子网格设置了move_speed
,然后使用meshlib.tres
将场景导出到Scene > Convert To > Mesh Library
。在另一个场景中,我使用导出的网格库作为GridMap
创建了theme
。
在运行时,我像这样查找图块数据:
var tile_idx = map.get_cell_item(selected_coord.x, selected_coord.y, selected_coord.z)
if tile_idx != GridMap.INVALID_CELL_ITEM:
var tile = map.theme.get_item_mesh(tile_idx)
但是,图块对象的类型为ArrayMesh
。我不再有权访问附加的脚本。此外,ArrayMesh
不会扩展Node
,这意味着我无法列出我可能在MeshLibrary
场景中添加的孩子。
有没有办法为每个图块存储“额外元素”?