首页 > 解决方案 > unity array,获取当前索引 -x 或 +x

问题描述

例如,我如何获得当前索引 -5。我知道如何获取当前索引,并且可以减去或添加到该索引,但这会导致 Array 越界错误。假设数组有 15 个项目(索引 0/14),我当前的索引是 2,如果我减去 5,它将返回 -3。这在数组中不存在。现在我想要的是,当索引为 2 并且我减去 5 时它返回 11,所以它应该始终循环遍历数组。显然,这同样适用于添加 5。

标签: c#arraysunity3dindexingcircular-buffer

解决方案


您可以像这样创建扩展方法:

public static int ComputeCircularIndex(this Array arr, int i) 
{
   int N = arr.GetLength(0);
   if (i < 0) 
   {
       i = N + (i % N);
   } 
   else 
   {
       i = i % N;
   }
   return i;
}

推荐阅读