Unityではプラットフォーム(PC、Androidなどの動作する環境)に合わせて処理を変更する機能があり、それをプラットフォーム依存コンパイルと呼びます。
void Awake()
{
# if UNITY_EDITOR
arCamera.SetActive(false);
# elif UNITY_ANDROID || UNITY_IOS
editorCamera.SetActive(false);
stage.SetActive(false);
# endif
}
#if プラットフォーム名(Unityで定義されている)を指定することで、そのプラットフォームの場合のみ指定した処理を行うように設定できます。
また if / else 文と同じように #elif を追加する、あるいは else 文と同じように #else を追加することで別のプラットフォームの場合の分岐を作成できます。
そのため使用方法は通常のif文の制御と同様です。
今回のケースでは、プラットフォームが UnityEditorの場合(PCも含みます)には、arCamera 変数に対して SetActive メソッドを実行するように記述しています。
プラットフォームが elif、つまり、UnityEditor 以外でゲームを実行している場合であり、かつ Andorid か iOS のプラットフォームの場合には、
editorCamera 変数と stage 変数に対して SetActive メソッドを実行するように記述しています。
この機能を利用することにより、
1つのメソッド内でプラットフォームに応じた処理を分岐して記述できます。
今回は、Unity エディター(PC)においてゲームを実行した場合には、MainCamera ゲームオブジェクトを利用できる状態にし、
スマホ端末でゲームを実行した場合には AR のカメラを利用できる状態にしています。
また、プラットフォームによって入力の方式が異なる場合にも適用することができます。
スマホとPCではキー入力の方式が異なるため、一概に1つの処理ですべてをカバーすることが出来ないためです。
そういったケースを想定して、こういったプラットフォームに依存した形式のコンパイル方法が用意されています。
<参考サイト>
Unity公式スクリプトリファレンス
プラットフォーム依存コンパイル
https://docs.unity3d.com/ja/2018.4/Manual/Platform...
XR-Hub 様
【Unity】プラットフォームごとに処理を変更する方法
https://xr-hub.com/archives/13648