コガネブログ

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

【Unity】【NGUI】文字列にカラータグを含む場合 true を返す拡張メソッド

using System.Text.RegularExpressions;

public static class StringExt
{
    private static readonly Regex COLOR_TAG_PATTERN = 
        new Regex( @"(\[[0-9A-F]{6}\])", RegexOptions.IgnoreCase );
    
    public static bool ContainsColorTag( this string self )
    {
        return COLOR_TAG_PATTERN.IsMatch( self );
    }
}
var text = "[ffff00]ピカチュウ[-]";
Debug.Log( text.ContainsColorTag() );

【Unity】OnPreprocessTextureでテクスチャフォーマットにETCやPVRTCを設定する方法

  • Unity 5.4.3f1
public class TextureAssetPostProcessor : AssetPostprocessor
{
    private void OnPreprocessTexture()
    {
        var impoter             = assetImporter as TextureImporter;
        var maxTextureSize      = 2048;
        var compressionQuality  = 50;
        
        impoter.SetPlatformTextureSettings
        ( 
            platform            : "Android", 
            maxTextureSize      : maxTextureSize, 
            textureFormat       : TextureImporterFormat.ETC_RGB4, 
            compressionQuality  : compressionQuality,
            allowsAlphaSplit    : false 
        );
        
        impoter.SetPlatformTextureSettings
        ( 
            platform            : "iPhone",
            maxTextureSize      :  maxTextureSize, 
            textureFormat       :  TextureImporterFormat.PVRTC_RGB4, 
            compressionQuality  :  compressionQuality, 
            allowsAlphaSplit    :  false 
        );
    }
}

参考サイト様

【Unity】OnPreprocessTextureでテクスチャのサイズを取得する方法

  • Unity 5.4.3f1
public class TextureAssetPostProcessor : AssetPostprocessor
{
    private void OnPreprocessTexture()
    {
        var impoter     = assetImporter as TextureImporter;
        var size        = new object[ 2 ] { 0, 0 };
        var method      = typeof( TextureImporter ).GetMethod( "GetWidthAndHeight", BindingFlags.NonPublic | BindingFlags.Instance );
        method.Invoke( impoter, size );
        
        var width  = ( int )size[ 0 ];
        var height = ( int )size[ 1 ]; 
    }
}

【Unity】OnPreprocessTextureでテクスチャがアルファチャンネルを所持しているかどうかを確認する方法

  • Unity 5.4.3f1
public class TextureAssetPostProcessor : AssetPostprocessor
{
    private void OnPreprocessTexture()
    {
        var impoter     = assetImporter as TextureImporter;
        var haveAlpha   = impoter.DoesSourceTextureHaveAlpha();
        
        Debug.Log( haveAlpha );
    }
}

参考サイト様

【おすすめスライド】「【Unity道場】パフォーマンス最適化のポイント」