【Unity】Unity2020.2からTexture2DArrayやTexture3Dがインポート設定で作れるようになってた

Unity2020.2からTexture2DArrayやTexture3Dがインポート設定で作れるようになってた話です。

Unity2021.1.11f1

Texture2DArray?Texture3D?

Texture2DArrayやTexture3Dは同じサイズとフォーマットのテクスチャを一つにまとめたアセットです。 Texture2DArrayは配列のようにインデックスアクセスができ、Texture3Dは複数のテクスチャを三次元情報として保持します。

docs.unity3d.com

docs.unity3d.com

いままではスクリプトで作るしかなかった

さてこれらのアセットは、今まではスクリプトで作るしかありませんでした。
例えばTexture2DArrayの場合は以下のように作ります。

using System.IO;
using UnityEditor;
using UnityEngine;

public class Texture2DArrayExample
{
    [MenuItem("Example/Create Texture 2D Array")]
    private static void CreateTexture2DArray()
    {
        const int width = 64;
        const int height = 64;
        const int depth = 10;
        const TextureFormat format = TextureFormat.ARGB32;

        var tex2dArr = new Texture2DArray(width, height, depth, format, false)
        {
            filterMode = FilterMode.Bilinear,
            wrapMode = TextureWrapMode.Clamp
        };

        // テクスチャ1枚分ごとに適当に色を変えながらTexture2DArrayを作る
        for (var i = 0; i < depth; i++)
        {
            var color = Random.ColorHSV();
            var pixels = new Color[width * height];
            for (var j = 0; j < width * height; j++)
            {
                pixels[j] = color;
            }

            tex2dArr.SetPixels(pixels, i);
        }

        tex2dArr.Apply();

        AssetDatabase.CreateAsset(tex2dArr, Path.Combine("Assets", "TestTexture2DArray.asset"));
    }
}

インポート設定から作れるようになった

Unity2020.2からはこれがテクスチャのインポート設定から作れるようになりました。
Shape設定から2D Arrayや3Dを選択してApplyすることで設定できます・

f:id:halya_11:20210816195716p:plain
インポート設定

Release noteは以下の通りです。

Editor: Added support for importing texture arrays (Texture2DArray) and volume textures (Texture3D) from "flipbook" image layouts. To use this, open the Texture Importer and see the Shape setting. https://unity3d.com/unity/whats-new/2020.2.0 より

参考

docs.unity3d.com

docs.unity3d.com

unity3d.com