(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

Device Simulator込みでPCとスマホ(タブレット)で処理を分ける方法【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
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シンボルと違って全プラットフォームでビルドされてしまうため、

他のプラットフォームではエラーが出てしまうようなコードには使えない点には注意が必要です。