【Unity】プラットフォームごとに処理を変更する方法


Unityを使用しているときに、「エディタ上ではClick処理、スマホではTouch処理を行うようにしたい」ということがあるのではないでしょうか。

そこで今回はプラットフォームによって実行する処理を変更する方法をご紹介します。

Unityで使えるプラットフォーム

プラットフォームごとに処理を変更する方法

早速プラットフォームごとに処理を変更する方法をご紹介していきます。

今回ご紹介するプラットフォームごとに処理を変更することをUnity公式では「プラットフォーム依存コンパイル 」と呼んでいます。

これによってスマートフォン専用の処理をUnityエディタ上でもテストできるような仕様にすることができます。
方法はとても簡単です。「#if プラットフォーム名 処理 #endif」でこのような処理を実行することができます。

以上のように記述することでプラットフォームによって処理を変更することができます。

使用できるプラットフォームを以下にまとめておきます。(Unity公式マニュアルより

プロパティー 説明
UNITY_EDITOR ゲームコードから Unity エディターのスクリプトを呼び出すための #define ディレクティブ
UNITY_EDITOR_WIN Windows 版エディターコードのための #define ディレクティブ
UNITY_EDITOR_OSX Mac OS X 版エディターコードのための #define ディレクティブ
UNITY_STANDALONE_OSX Mac OS X (Univeral、PPC、Intel のアーキテクチャを含む)のコードをコンパイル/実行するための #define ディレクティブ
UNITY_STANDALONE_WIN Windows スタンドアロンアプリケーションのコードをコンパイル/実行するための #define ディレクティブ
UNITY_STANDALONE_LINUX Linux スタンドアロンアプリケーションのコードをコンパイル/実行するための #define ディレクティブ
UNITY_STANDALONE あらゆるスタンドアロンプラットフォーム(Mac OS X, Windows, Linux)のコードをコンパイル/実行するための #define ディレクティブ
UNITY_WII Wii コンソールのためのコードをコンパイル/実行するための #define ディレクティブ
UNITY_IOS iOS プラットフォームのためのコードをコンパイル/実行するための #define ディレクティブ
UNITY_IPHONE 非推奨。代わりに UNITY_IOS を使用してください。
UNITY_ANDROID Android プラットフォームのための #define ディレクティブ
UNITY_PS4 PlayStation 4 のコードを実行するための #define ディレクティブ
UNITY_XBOXONE XBox One のコードを実行するための #define ディレクティブ
UNITY_TIZEN Tizen プラットフォームのための #define ディレクティブ
UNITY_TVOS Apple TV プラットフォームのための #define ディレクティブ
UNITY_WSA ユニバーサル Windows プラットフォームのための #define ディレクティブ。さらに、C# ファイルを .NET Core 向けにコンパイルし .NET スクリプティングバックエンドを使用する場合に、NETFX_CORE が定義されます。
UNITY_WSA_10_0 ユニバーサル Windows プラットフォームのための
#define ディレクティブ。さらに、C# ファイルを .NET Core 向けにコンパイルする場合に、WINDOWS_UWPが定義されます。
UNITY_WINRT UNITY_WSA と同様
UNITY_WINRT_10_0 UNITY_WSA_10_0 に相当
UNITY_WEBGL WebGL のための #define ディレクティブ
UNITY_FACEBOOK Facebook プラットフォーム (WebGL か Windows スタンドアロン) のための #define ディレクティブ
UNITY_ADS ゲームコードから Unity Ads メソッドを呼び出すための #define ディレクティブ。Unity 5.2 以降で使用可能。
UNITY_ANALYTICS ゲームコードから Unity Analytics メソッドを呼び出すための #define ディレクティブ。Unity 5.2 以降で使用可能。
UNITY_ASSERTIONS アサーション制御プロセスの #define ディレクティブ

iPhoneとUnityエディタで処理を変更する方法

それでは実際にスクリプトを記述して確認していきます。

ここではUIテキストを作成して、それぞれの端末で表示する文言を変えるスクリプトを作成していきます。

まずは適当な大きさのテキストを作成してください。

参考記事)テキストの使用方法

適当なサイズのテキストを作成
適当なサイズのテキストを作成

次にテキストを変更するためのスクリプト「TextChanger」を作成します。

作成したスクリプトを以下のように編集してください。

このスクリプトを適当なオブジェクトにアタッチして先ほど作成したUIテキストをアタッチしてください。

ではまずUnityエディタで実行して確認してみましょう。

Unityエディタで実行した結果
Unityエディタで実行した結果

期待通りの処理が実行されました。

次にiOSで実行して確認してみましょう。

iOSで実行した結果
iOSで実行した結果

処理が変更されていることが確認できました。

iOSでの実行方法については以下記事をご参考ください。

参考記事)iPhoneでの実装方法

このようにすることでUnityエディタではクリック処理、スマートフォンではタップ処理にするなど、様々な場面に柔軟に対応することができるようになります。

まとめ

いかがでしたでしょうか。

今回はプラットフォームごとに処理を変更する方法をご紹介してきました。

AndroidとiOSアプリを同時にリリースしたいときなどには必須の知識です。

簡単に実装することができますのでぜひ実践してみてください!


プラットフォームアイキャッチ

この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!

Twitterはじめました @FuruiYuya