コガネブログ

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

【Unity】Texture の塗りつぶし(SetPixel)を高速化する方法

概要

for ( var x = 0; x < m_size.x; x++ )
{
    for ( var y = 0; y < m_size.y; y++ )
    {
        m_texture.SetPixel( x, y, Color.clear );
    }
}

m_texture.Apply();

上記のコードだと 0.5 秒かかるところが

var pixels = m_texture.GetPixels32();

for ( var i = 0; i < pixels.Length; i++ )
{
    pixels[ i ] = Color.clear;
}

m_texture.SetPixels32( pixels );
m_texture.Apply();

上記のコードだと 0.12 秒に改善された

var pixelData = m_texture.GetPixelData<Color32>( 0 );

for ( var i = 0; i < pixelData.Length; i++ )
{
    pixelData[ i ] = new Color32( 0, 0, 0, 0 );
}

m_texture.Apply();

さらに上記のコードだと 0.02 秒に改善された

参考サイト様