## **數據結構(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)