2013年5月22日水曜日

Unity Tips #50 - コンパイル記号があることの確認

前回に引き続いて Unify Community からコンパイル記号に関する Tips の翻訳を紹介する:



http://wiki.unity3d.com/index.php/Tip_of_the_day
Feb 2013

Tip #50 Ensure conditional compilation symbols are present

コンパイル記号があることの確認


もし Unity のコードで条件付きコンパイル記号が必要な場合、このコードが便利かもしれない。Unity が自身のスクリプトをコンパイルした後、InitializeOnLoad 属性のあるクラスを実行します。 コード スニペットに含まれる SetupConditionalCompilation メソッドをコールすることで条件付きコンパイル記号が Unity プロジェクトで永続することを保証できます。もし記号がなくて追加された場合、Unity コンソールに通知を書き出します。


[InitializeOnLoad]
public class GridMappingSetup
{
    static GridMappingSetup()
    {
        var types = new[] { BuildTargetGroup.Standalone, BuildTargetGroup.WebPlayer };
        var toInclude = new[] { "CBXControls", "GridMapping", "QuickTools", "ToolService", "TileMaterialCreation" };
 
        SetupConditionalCompilation(types, toInclude);
    }
}
 
  public static void SetupConditionalCompilation(BuildTargetGroup[] platformTargets, string[] symbolsToInclude)
        {
            foreach (var type in platformTargets)
            {
                var hasEntry = new bool[symbolsToInclude.Length];
                var conditionals = PlayerSettings.GetScriptingDefineSymbolsForGroup(type).Trim();
                var parts = conditionals.Split(';');
                var changed = false;
 
                foreach (var part in parts)
                {
                    for (int i = 0; i < symbolsToInclude.Length; i++)
                    {
                        if (part.Trim() == symbolsToInclude[i].Trim())
                        {
                            hasEntry[i] = true;
                            break;
                        }
                    }
                }
 
                for (int i = 0; i < hasEntry.Length; i++)
                {
                    if (!hasEntry[i])
                    {
                        conditionals += (String.IsNullOrEmpty(conditionals) ? String.Empty : ";") + symbolsToInclude[i];
                        changed = true;
                    }
                }
 
                PlayerSettings.SetScriptingDefineSymbolsForGroup(type, conditionals);
 
                if (changed)
                {
                    Debug.Log(String.Format("Updated player conditional compilation symbols for {0}: {1}", type, conditionals));
                }
            }
        }
---------

地味なTipsでも積み重ねて力にしていこうぜ!

0 件のコメント:

コメントを投稿