You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#:如何将三维Node数组转为一维数组以支持编辑时保存?

三维网格坐标转一维数组索引方案

核心转换公式

对于尺寸为width(x轴节点数)、height(y轴节点数)、depth(z轴节点数)的三维网格,任意节点的坐标(x, y, z)(0-based索引)可通过以下公式转换为一维数组的索引:

index = x + y * width + z * width * height

参数说明

  • x:节点在x轴的位置(取值范围:0 ≤ x < width)
  • y:节点在y轴的位置(取值范围:0 ≤ y < height)
  • z:节点在z轴的位置(取值范围:0 ≤ z < depth)
  • width * height:单个z层包含的节点总数,用于快速定位z轴对应的起始索引

反向转换(索引转坐标)

如果需要从一维数组索引还原回三维坐标,可使用以下计算:

x = index % width
y = (index / width) % height
z = index / (width * height)

代码示例(C#)

// 定义网格尺寸
int gridWidth = 10;   // x轴节点数
int gridHeight = 8;   // y轴节点数
int gridDepth = 5;    // z轴节点数

// 三维坐标转一维索引
int targetX = 3;
int targetY = 2;
int targetZ = 1;
int arrayIndex = targetX + targetY * gridWidth + targetZ * gridWidth * gridHeight;

// 一维索引转三维坐标
int restoredX = arrayIndex % gridWidth;
int restoredY = (arrayIndex / gridWidth) % gridHeight;
int restoredZ = arrayIndex / (gridWidth * gridHeight);

注意事项

  • 必须使用0-based坐标,如果你的网格坐标是从1开始的,需要先对x、y、z分别减1再计算索引
  • 一维数组的长度必须等于width * height * depth,避免数组越界

内容的提问来源于stack exchange,提问作者Justin Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:45:36