コガネブログ

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

【Unity】ファイル名に全角文字が含まれたテクスチャがUnityプロジェクトに追加された時に警告ダイアログを表示

using UnityEditor;
using System.IO;

/// <summary>
/// アセットをインポートする時の処理を記述します
/// </summary>
public class AssetPreprocessor : AssetPostprocessor
{
    /// <summary>
    /// テクスチャをインポートする直前に呼び出されます
    /// </summary>
    private void OnPreprocessTexture()
    {
        // 全角文字が含まれているかどうかを確認します
        var importer = assetImporter as TextureImporter;
        var filename = Path.GetFileName(importer.assetPath);
        if (!IsOneByteStr(filename))
        {
            EditorUtility.DisplayDialog(
                filename, "全角文字が含まれています", "OK");
        }
    }
    /// <summary>
    /// 1バイト文字で構成された文字列かどうかを確認します
    /// </summary>
    /// <param name="str">確認対象の文字列</param>
    /// <returns>1バイト文字のみで構成された文字列の場合 true</returns>
    private bool IsOneByteStr(string str)
    {
        var bytes = System.Text.Encoding.GetEncoding(932).GetBytes(str);
        return bytes.Length == str.Length;
    }
}

デザイナさんにテクスチャを作成してUnityプロジェクトに追加して頂くときに
ときどきテクスチャのファイル名に全角文字が含まれていることがあったので
もしファイル名に全角文字が含まれていたら警告ダイアログを表示するためのスクリプトです

全角文字はバグの要因になりやすいので念の為に