## **数据结构(Data structures)**
在游戏中,您经常需要以精确而有序的方式存储信息。例如,您可能需要存储人员携带的物品清单,或者您可能需要存储需要访问的地点的网格。现在,为了实现它们您可以使用数组(array)结构,但是如果您想要执行更复杂的操作,比如排序数据或搜索特定项目,则需要编写大量的GML代码,这些代码执行速度慢并难以调试,真正的痛苦是每次都要把它们写一次!
为了弥补这一点,GameMaker Studio 2为您准备了六种内置的数据结构,可以通过对应功能进行访问。在这里不同类型的数据结构都有其自身的优点,具体取决于您希望存储的信息类型以及以后如何处理它们:堆栈,队列,列表,映射,优先级队列和网格。
实质上,所有的数据结构都以相同的方式工作 - 创建一个数据结构并将其索引值存储在一个变量中。然后,您可以使用此索引来引用并对其执行操作,并且可以在其他函数中调用数据结构。最后,一旦你不再需要它的时候,你需要销毁数据结构,将其从内存中删除。您可以根据需要同时使用多种结构,并且所有结构都可以存储字符串和实际值。
**注意:**与所有动态资源一样,数据结构会占用内存,因此在不再需要时总是需要摧毁它,以防止内存泄漏,从而减慢并最终导致游戏崩溃。
有关不同数据结构的信息可以在以下部分找到:
* Stacks(堆栈)
* Queues(队列)
* list(列表)
* Maps(映射)
* Priority Queues(优先队列)
* Grids(网格)
在你的游戏中使用数据结构之前,你还应该知道,由于四舍五入的错误,你可能会得到一个不是你所期望的结果。这可以通过使用以下函数更改DS精度来解决:
* ds_set_precision
还有一个特殊的功能来检查是否存在任何给定类型的数据结构:
* ds_exists
最后,您还可以将值存储在数组中。您可以从以下部分了解有关数组的更多信息:
* array(数组)
- 简言
- 额外接口
- asset_get_index
- asset_get_type
- 粒子(PARTICLE)
- 简单粒子系统
- effect_create_below
- effect_create_above
- effect_clear
- ef_all
- 粒子系统
- 粒子系统的创建
- part_system_exists
- part_system_create
- part_system_create_layer
- part_system_get_layer
- part_system_layer
- part_system_clear
- part_system_depth
- part_system_position
- part_system_destroy
- part_particles_clear
- part_particles_count
- 系统绘图
- part_system_automatic_update
- part_system_automatic_draw
- part_system_update
- part_system_drawit
- part_system_draw_order
- 直接创建粒子
- part_particles_create
- part_particles_create_colour
- 粒子类型
- part_type_exists
- part_type_create
- part_type_destroy
- part_type_clear
- part_type_shape
- part_type_sprite
- part_type_size
- part_type_scale
- part_type_speed
- part_type_direction
- part_type_gravity
- part_type_orientation
- part_type_colour_mix
- part_type_colour_rgb
- part_type_colour_hsv
- part_type_colour1
- part_type_colour2
- part_type_colour3
- part_type_alpha1
- part_type_alpha2
- part_type_alpha3
- part_type_blend
- part_type_life
- part_type_step
- part_type_death
- 粒子发射器
- part_emitter_exists
- part_emitter_create
- part_emitter_clear
- part_emitter_region
- part_emitter_burst
- part_emitter_stream
- part_emitter_destroy
- part_emitter_destroy_all
- 数组(array)
- 数据结构(Data structures)
- 心得分享
- ds_exists
- ds_set_precision
- 网格(grid)
- ds_grid_create
- ds_grid_destroy
- ds_grid_width
- ds_grid_height
- ds_grid_resize
- ds_grid_clear
- ds_grid_set
- ds_grid_set_disk
- ds_grid_set_grid_region
- ds_grid_set_region
- ds_grid_shuffle
- ds_grid_sort
- ds_grid_get
- ds_grid_get_max
- ds_grid_get_mean
- ds_grid_get_min
- ds_grid_get_sum
- ds_grid_get_disk_max
- ds_grid_get_disk_mean
- ds_grid_get_disk_min
- ds_grid_get_disk_sum
- ds_grid_add
- ds_grid_add_region
- ds_grid_add_disk
- ds_grid_add_grid_region
- ds_grid_multiply
- ds_grid_multiply_disk
- ds_grid_multiply_region
- ds_grid_multiply_grid_region
- ds_grid_value_exists
- ds_grid_value_disk_exists
- ds_grid_value_x
- ds_grid_value_y
- ds_grid_value_disk_x
- ds_grid_value_disk_y
- ds_grid_copy
- ds_grid_read
- ds_grid_write
- 列表(list)
- 映射(map)
- 队列(Queues)
- 优先队列(Priority Queues)
- 堆栈(stack)