【Unity】アセット名を変更する

DEVELOP, Unity

アセット名を変更するには、AssetDatabase.RenameAsset を使えば可能です。

目次

サンプルコード

Assets/Resources フォルダ以下のMaterial ファイルに"_mat" を付ける場合は以下の様になります。

using System.IO;
using UnityEditor;
namespace Editor
{
    /// <summary>
    /// Materialのファイル名に "_mat" を付与します。
    /// </summary>
    public class RenameMaterialFiles : EditorWindow
    {
        [MenuItem("Window/RenameMaterialFiles")]
        public static void Open()
        {
            var window = EditorWindow.CreateWindow<RenameMaterialFiles>();
            window.Show();
            window.Run();
        }
        /// <summary>
        /// 実行。
        /// </summary>
        void Run()
        {
            var AllMaterialResourceArray = Directory.GetFiles("Assets/Resources", "*.mat", SearchOption.AllDirectories);
            foreach (var path in AllMaterialResourceArray)
            {
                var targetPath = UnifyPath(path);
                if (targetPath.Contains("_mat"))
                {
                    continue;
                }
                var fileName = Path.GetFileNameWithoutExtension(targetPath) + "_mat";
                AssetDatabase.RenameAsset(targetPath, fileName);
            }
        }
        /// <summary>
        /// パスの解決。基本的にパスは全て"/"で使われているものとして動作する("\\"は用いない)
        /// </summary>
        private string UnifyPath(string _path)
        {
            return _path.Replace("\\", "/");
        }
    }
}

公式リファレンス

AssetDatabase-RenameAsset – Unity スクリプトリファレンス (unity3d.com)

Posted by kazupon