【Unity】プラットフォームごとに処理を変更する方法
Unityを使用しているときに、「エディタ上ではClick処理、スマホではTouch処理を行うようにしたい」ということがあるのではないでしょうか。
そこで今回はプラットフォームによって実行する処理を変更する方法をご紹介します。
Contents
プラットフォームごとに処理を変更する方法
早速プラットフォームごとに処理を変更する方法をご紹介していきます。
今回ご紹介するプラットフォームごとに処理を変更することをUnity公式では「プラットフォーム依存コンパイル 」と呼んでいます。
これによってスマートフォン専用の処理をUnityエディタ上でもテストできるような仕様にすることができます。
方法はとても簡単です。「#if プラットフォーム名 処理 #endif」でこのような処理を実行することができます。
1 2 3 4 5 6 7 |
#if UNITY_EDITOR //Unityエディタのみで実行したい処理を記述 #endif #if UNITY_IOS //iOSのみで実行したい処理を記述 #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」を作成します。
作成したスクリプトを以下のように編集してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TextChanger : MonoBehaviour { public Text text; // Start is called before the first frame update void Start() { #if UNITY_EDITOR //Unityエディタのみで実行したい処理を記述 text.text = "This is Unity_Editor"; #endif #if UNITY_IOS //iOSのみで実行したい処理を記述 text.text = "This is iOS"; #endif } } |
このスクリプトを適当なオブジェクトにアタッチして先ほど作成したUIテキストをアタッチしてください。
ではまずUnityエディタで実行して確認してみましょう。
期待通りの処理が実行されました。
次にiOSで実行して確認してみましょう。
処理が変更されていることが確認できました。
iOSでの実行方法については以下記事をご参考ください。
参考記事)iPhoneでの実装方法
このようにすることでUnityエディタではクリック処理、スマートフォンではタップ処理にするなど、様々な場面に柔軟に対応することができるようになります。
まとめ
いかがでしたでしょうか。
今回はプラットフォームごとに処理を変更する方法をご紹介してきました。
AndroidとiOSアプリを同時にリリースしたいときなどには必須の知識です。
簡単に実装することができますのでぜひ実践してみてください!
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!