代码之家  ›  专栏  ›  技术社区  ›  Exp HP

.NET:将一个二维数组写入另一个二维数组

  •  1
  • Exp HP  · 技术社区  · 17 年前

    为此制作我自己的系统是很容易的,但我认为,尽管.NET库非常庞大,但它可能已经有了一个专门为此而设计的类。

    对于命中检测,我的VB.NET游戏使用两个2D数组来存储关卡中每个像素的状态。这些数组中的每个元素都是一个字节(或者更准确地说,是基于字节的标志枚举类型的值)。

    Public TiHD(,) As HitDT ''//State of each pixel in the level based on
                            ''// its underlying tile.
    Public SpHD(,) As HitDT ''//State of each pixel in the level based on
                            ''// sprite occupation.
    
    <Flags> _
    Public Enum HitDT As Byte
        Solid = 1
        Danger = 2
        Water = 4
        Healing = 8
        Restore = 16
        AreaExit = 32
    End Enum
    

    我很高兴能给每个雪碧&平铺它自己的2D命中检测数据数组(定义对象的哪些像素是实心的、危险的等),这些数据可以以指定的偏移量直接写入TiHD或SpHD。

    我敢打赌.NET有一个类可以帮我做到这一点。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Jon Skeet    17 年前

    你试过使用吗 Buffer.BlockCopy ?

        2
  •  0
  •   MusiGenesis    17 年前

    数组。复制工作(抱歉,这是C#):

    int[,] i1 = new int[10, 10];
    int[,] i2 = new int[10, 10];
    Array.Copy(i1, i2, i1.GetLength(0) * i1.GetLength(1));
    

    没关系,这不是我想的那样。显然,Array.Copy将二维数组视为一个大(维度1 X维度2)数组,因此使用带有偏移量的Array.Copy无法正常工作。你是对的,你需要逐行使用这个或区块复制。

    更新2: