読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

Unity 4 でユーザ定義のコンパイル定数を用いる

Unity C#

こういうのをやりたい

void foo()
{
#if HOGE // ←この定数を自分で定義したい
    Debug.Log("ほげ限定ログ");
#endif
}

独自に定義した定数でコンパイル振り分けたいよね、っていう。

Unity が勝手に定義してくれる定数について

UNITY_EDITOR とか UNITY_EDITOR_WIN とか UNITY_ANDROID とか、こういうのは昔から使える。

void foo()
{
    aaaa();
#if UNITY_EDITOR
    // Unity Editor から起動するときに有効な処理
    bbbb();
#endif
#if UNITY_ANDROID
    // Android 固有の処理
    cccc();
#endif
    dddd();
}

こんな感じで振り分けられる。

Unity 4 から使えるユーザ定義コンパイル定数(シンボル)

Unity 4 からユーザ定義のコンパイル定数(シンボル)が使えるようになったみたい。

Preprocessor #defines | Unity Community

Any way to define a preprocessor symbol across all source files before doing a build?
bem13, Mar 25, 2011

No there is no way to do that, at least not yet.
Dreamora, Mar 25, 2011

Unity4 supports in-editor defines.
iwaldrop, Mar 1, 2013

定義する場所

Edit - Project Settings - Player メニューを選択。
f:id:kobake:20150127200414p:plain:w400

PlayerSettings Inspector が出現する。
f:id:kobake:20150127200418p:plain:w350

この中の Other Settings - Configuration - Scripting Define Symbols というところでシンボルを定義できる。

複数定義したい場合にはセミコロン区切りで。

結果

f:id:kobake:20150127201334p:plain:w400
ぐへへへ、シンボル HOGE が定義されたぜ…!!!(ちゃんと Visual Studio でも認識される)

});