栅格数据结构


A ds_grid is basically a type of two-dimensional array. 你可以通过设置整数宽和高来定义一个栅格数据结构,及其"单元格"总数(即宽和高相乘),然后在这些单元格中保存不同的数据(实数或字符串)

这种数据结构允许你设置并通过x和y值来索引网格中的数据(x和y轴均从0开始索引,上限均为-1)。你还可以设置和获取某特定范围内网格数据的总和、最大值、最小值以及平均值,因此这个数据结构是所有类型中功能最丰富的。

当访问网格数据结构时,你应该确保使用"整数"值来索引单元格坐标,否则GameMaker Studio 2将自动向下取整如果这不是你所需要的,那么在传递你要检查的索引之前,你需要先自己进行四舍五入。

注意: 跟动态资源一样,数据结构会消耗内存,因此当不再使用它时应当销毁释放内存,以防止内存泄漏拖慢游戏运行效率甚至崩溃


下列函数都是用于处理栅格数据结构的:

  1. ds_grid_create
  2. ds_grid_destroy
  3. ds_grid_width
  4. ds_grid_height
  5. ds_grid_resize
  6. ds_grid_clear
  7. ds_grid_set
  8. ds_grid_set_disk
  9. ds_grid_set_grid_region
  10. ds_grid_set_region
  11. ds_grid_shuffle
  12. ds_grid_sort
  13. ds_grid_get
  14. ds_grid_get_max
  15. ds_grid_get_mean
  16. ds_grid_get_min
  17. ds_grid_get_sum
  18. ds_grid_get_disk_max
  19. ds_grid_get_disk_mean
  20. ds_grid_get_disk_min
  21. ds_grid_get_disk_sum
  22. ds_grid_add
  23. ds_grid_add_region
  24. ds_grid_add_disk
  25. ds_grid_add_grid_region
  26. ds_grid_multiply
  27. ds_grid_multiply_disk
  28. ds_grid_multiply_region
  29. ds_grid_multiply_grid_region
  30. ds_grid_value_exists
  31. ds_grid_value_disk_exists
  32. ds_grid_value_x
  33. ds_grid_value_y
  34. ds_grid_value_disk_x
  35. ds_grid_value_disk_y
  36. ds_grid_copy
  37. ds_grid_read
  38. ds_grid_write

出了这些特定的函数外,你还可以使用表达式(或称"访问器")来添加或修改其中的数据语法跟2维数组十分类似

grid_index[# xpos, ypos]

你还可以找到更多相关内容,比如你可以在GML总览页查看更多关于 Accessors的介绍.

注意:如果你需要检查数据结构是否存在,你可以使用ds_exists()函数。


.