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

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Unityで共通のdefineを定義する【Unity】【C#】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.2.2f1 Personal


はじめに

C#では#defineでシンボルを定義し、#unddef でシンボルを未定義にする事ができます。


シンボルを使えば以下のように、

定義されているシンボルによって処理を変更できます。


f:id:kan_kikuchi:20151104135759p:plain
f:id:kan_kikuchi:20151104135808p:plain


なお、無効になっている場所はコンパイルもされません。


ただ、このシンボルは宣言したスクリプト内でしか使えないという問題があります。


Scripting Define Symbols

UnityではScripting Define Symbols を使う事で、シンボルをプロジェクト全体に反映できます。

Scripting Define SymbolsはPlayerSettings - Other Settingsから設定できます。


f:id:kan_kikuchi:20151127133506j:plain


なお、複数設定したい場合は

DEBUG;DEBUG_HOGE

のように;区切りにすればOKです。


Scripting Define Symbolsの問題点

Scripting Define Symbolsを使う事で共通のdefineを定義する事はできますが、

正直かなり使い難いです。


欠点としては以下のような事が挙げられます。

  • 全プラットフォームに一括設定ができない
  • 羅列されるので設定されてる項目がわかり難い
  • なんのシンボルか説明をコメントでかけない
  • 未定義にする場合消すので、再設定がめんどい


また、CやC++のように、定数が設定できないのも地味に不便だったりします。

//Cでのdefineを使った定数宣言
#define WIDTH 640


こういう場合、エディタ拡張で使い易くしよう!

みたいになると思うのですが、すでに先人がいらっしゃいました。



定数の話を除けば、上記を使う事でかなり楽になりますね!


おわりに


実を言うと、上記の記事を発見する前に自分も作ってしまっていました……。

と言っても機能は結構違いますが……


定数の件についても疑似的にですが、解決してたりします。


f:id:kan_kikuchi:20151202135151p:plain


この詳細については次回の記事で(:3っ)∋〜


------追記

書きました!