この記事でのバージョン
Unity 2022.2.2f1
はじめに
複数のプラットフォーム向けにゲームを作ってると、
プラットフォームごとに処理を分ける必要が出てきます。
そんな時はdefineシンボルを使えば、簡単に処理を分けられますが、
#if UNITY_IOS //iOSの処理 #elif UNITY_ANDROID //Androidの処理 #else //それ以外(Windows等)の処理 #endif
プラットフォームを切り替えないと動作確認が出来ないため、
例えばプラットフォームごとにUIの表示分けをしてDevice Simulatorで確認したいみたいな時は面倒です。
という事で今回はDevice Simulator込みでPCとスマホ(タブレット)で処理を分ける方法の紹介です!
DisallowMultipleComponent
Device Simulator込みの情報を得るにはUnityEngine.Deviceを使います。
例えばスマホまたはタブレットならUnityEngine.Device.SystemInfo.deviceTypeがHandheldになります。
if (UnityEngine.Device.SystemInfo.deviceType == DeviceType.Handheld) { //スマホやタブレットでの処理 } else{ //それ以外での処理 }
また、UnityEngine.Device.Application.platformでプラットフォームも取得出来るので、
AndroidやiOSで処理を分ける事も可能です。
if (UnityEngine.Device.Application.platform == RuntimePlatform.Android) { //Androidの処理 } else if (UnityEngine.Device.Application.platform == RuntimePlatform.IPhonePlayer) { //iOSの処理(iPhoneと書いてあるがiPadも含む) }
ただし、defineシンボルと違って全プラットフォームでビルドされてしまうため、
他のプラットフォームではエラーが出てしまうようなコードには使えない点には注意が必要です。