(10)Unity3DとSwiftでiOSプログラミング~回転処理【実装編 1 】
新年おめでとうございます。
ことしもよろしくお願いします。
こんにちは。川上です。
平成30年。もう30年なんだぁ。長いようであっという間の30年ですなぁ。
30年かあ・・・。
色々あったよねぇ~。。
これからは、できるだけ、そっとしながら、そこそこパッとして、静かに安全でいればいいなぁとおもっています。_mm_
=.=.=
では、実機の回転でLandspace用(横型)とPortraie用(縦型)の表示更新をしてみます。
UnityからiOS環境のiPhone実機で実装していきます。
実機の回転Rotation処理でイベントを受けるのは、Unity側で受けることになります。
Unityでイベントを受けて、iOS側へRotation時のイベントを通信して、iOS上の表示部分を更新していきます。
Google先生さんから教示されて、Unity側で回転Rotation処理でイベントを受ける方法は、
Unity : モバイル画面の方向を固定、あるいは変化を検出
があります。
このソースを元にして、iOS側への通信処理を埋め込みます。
Unityの環境側でDeviceOpe.csを作成して、プラグイン用のコードを書いていきます。
(5)Unity3DとSwiftでiOSプログラミング~~ 電信開通‼️
で既存に作成したFileに順に実装していきます。この順序ルーチンは鉄板でしょう。
1. DeviceOpeCtrller.cs
→ 2. PluginUnityCtrller.cs
→ 3. PluginConnector.mm
毎度の取説でのピンポーンです。
『ちょこっとだけ、気づいたことや注意点などでのMy備忘録をしていますので、間違っていてもごめんなさいね。 』
~ 〜
1.DeviceOpeCtrller.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class DeviceOpeCtrller : MonoBehaviour { // 直前のディスプレイ向き DeviceOrientation PrevOrientation; // 端末の向きを取得するメソッド DeviceOrientation getOrientation() { DeviceOrientation result = Input.deviceOrientation; // Unkownならピクセル数から判断 if (result == DeviceOrientation.Unknown) { if (Screen.width < Screen.height) { result = DeviceOrientation.Portrait; } else { result = DeviceOrientation.LandscapeLeft; } } return result; } // Use this for initialization void Start () { ExecDeciveOrientation(); } // Update is called once per frame void Update () { ExecDeciveOrientation(); } void ExecDeciveOrientation() { //画面の回転を検出 DeviceOrientation currentOrientation = getOrientation(); if (PrevOrientation != currentOrientation) { #if UNITY_EDITOR Debug.Log(" ==== Update Device Orientation To JoyStick Position."); #elif UNITY_IOS // //画面の回転を検出 プラグインを初期化. PluginUnityCtrller.DeviceOpeToSwift(); #endif PrevOrientation = currentOrientation; } } } // EOF DeviceOpeCtrller |
2.PluginUnityCtrller.cs
1 2 3 4 5 6 7 8 9 10 11 | public class PluginUnityCtrller : MonoBehaviour { ・・・・・ ・・・・・ // プラグイン経由 //回転イベントにSwift内Viewに入れる public static void DeviceOpeToSwift() { Debug.Log ("---- DeviceOpeToSwift()"); deviceOpeToSwift_(); } }//EOF PluginUnityCtrller |
3. PluginConnector.mm
1 2 3 4 5 6 7 8 9 10 11 | extern "C"{ ・・・・ ・・・・ // MARK: -⚡️----- deviceOpeToSwift_イベント // MARK: --プラグイン経由 回転イベントにSwift内Viewに入れる void deviceOpeToSwift_() { [GateInUnity updateDeciveOrientation]; } } //EOF extern "C" |
次回、Unity側のプラグイン用のコードの実装後に、Xcode上の
4. GateInUnity.swift
で、回転処理を組み込みんでいきましょう。。
=・=・=
ではでは。