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 件のコメント:
コメントを投稿