首页 > 解决方案 > 如何从一维数组中获取特定部分的数据?

问题描述

我有一个常规的NativeArray颜色。我想根据给定的矩形有效地采样并从该数组中获取特定部分的数据。

假设我有这个 5x5(长度为 25)大小的一维颜色数组,我需要从这个矩形 (x:2, y:1, w:3, h:2) 中获取数据,如下图所示

在此处输入图像描述

我怎样才能做到这一点?

如果我尝试使用函数NativeArray<>.Copy它从索引复制到长度。因此,如果我指定索引 7 和 6 的长度,它将从 7 复制到 12,这对我不起作用。

标签: c#arraysunity3dcopy

解决方案


您发现NativeArray.Copy可以在副本应该开始的位置获取开始索引,在应该结束的位置获取结束索引。你的场景更复杂。您可以将 Native 数组视为 2D 数组,并使用嵌套的 for 循环将元素从其中复制到目标。Copy 方法也一样,它不是什么神奇的东西。

您可以使用以下公式将 2D x, y 索引转换为 1D 索引

i = y * width + x

推荐阅读