【Unity】3D Textureや2D Texture ArrayのColumnsとRowsをスクリプトから設定する

Unityで3D Textureや2D Texture ArrayのColumnsとRowsをスクリプトから設定する方法です。

やりたいこと

テクスチャのインポート設定において、Texture Shapeを2D Arrayや3Dにすると、ColumnsとRowsという設定項目が現れます。

ColumnsとRows

本記事ではこれらの値をスクリプトから設定する方法についてまとめます。

方法

ColumnsとRowsをスクリプトから設定にするには、以下のようにTextureImporterを取得した後に、さらにTextureImportSettingsを取得し、それに対して値を設定する必要があります。

詳細についてはコメントを参照してください。

using System;
using UnityEditor;
using UnityEngine;

public static class Example
{
    [MenuItem("Example/Run")]
    private static void Run()
    {
        var target = Selection.activeObject as Texture;
        if (target == null)
            throw new InvalidOperationException($"Selection is not Texture. {Selection.activeObject}");

        // TextureImporterを取得
        var importer = (TextureImporter)AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(target));

        // TextureImporterSettingsを取得してColumnとRowを設定
        var settings = new TextureImporterSettings();
        importer.ReadTextureSettings(settings);
        settings.flipbookColumns = 4;
        settings.flipbookRows = 4;

        // TextureImporterSettingsをTextureImporterに設定
        importer.SetTextureSettings(settings);

        // 保存
        importer.SaveAndReimport();
    }
}