コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】NativeArray で Reverse を使えるようにする拡張メソッド

ソースコード

using Unity.Collections;

namespace Kogane
{
    public static class NativeArrayExtensionMethods
    {
        public static void Reverse<T>( this NativeArray<T> self ) where T : unmanaged
        {
            var halfLength = self.Length / 2;
            var i          = 0;
            var j          = self.Length - 1;

            for ( ; i < halfLength; i++, j-- )
            {
                ( self[ i ], self[ j ] ) = ( self[ j ], self[ i ] );
            }
        }
    }
}

使用例

using Kogane;
using Unity.Collections;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Start()
    {
        using var array = new NativeArray<int>( 3, Allocator.Temp );
        array.CopyFrom( new[] { 1, 2, 3 } );
        array.Reverse();

        foreach ( var x in array )
        {
            Debug.Log( x );
        }
    }
}

参考サイト様