特定の設定時に、普通に「プラットフォーム依存コンパイル」を使用すると、スマートフォンの実機でのみ実行したいコードが、PC(エディタ)上でも実行されてしまう問題の解決法。
【結論】#ifの条件に「Androidの実機のみ」&「エディタ以外」を指定
この予期せぬ動作はバグではなく、Unityの仕様を把握していない為に起こる勘違いです(if条件の指定ミス)。
//Androidを指定しつつ、エディタを弾く。
#if !UNITY_EDITOR && UNITY_ANDROID
#endif
//エディタで別の動作をさせる場合には、以下のように書いても良い。
//(UNITY_EDITOR == trueのelse ifなので前述の物と同条件になっている)。
#if UNITY_EDITOR
#elif UNITY_ANDROID
#endif
Unity公式フォーラムで、言及があった。
【理由】エディタ上での実行は、複数のプラットフォーム情報を持つ場合がある
Build SettingsでTarget PlatformをAndroidに切り替えている場合、エディタでの実行でも「UNITY_EDITOR」と「UNITY_ANDROID」2つのプラットフォーム情報を持つのを確認。
スクリプトに以下のコードを記述して確認出来る。
#if UNITY_EDITOR && UNITY_ANDROID
print("Editor and Android");
#endif
iOSや、WEBGLに切り替えた場合も、同じ事態が発生すると思われる。
便利な機能だが、使用する際は注意されたし。