(22)Unity3DとSwiftでiOSプログラミング~ シーンを作ろう【実装編5】
こんにちは、川上です。
iOS(Swift)からUnity(C#)に送信されるには、
// unity側にSceneに送信する.
UnitySendMessage(“StageScnes”, “OnCallFromMenu”, retstr)
でした。
これを、Unityに受信するのは、“StageScnes”に組み込みしたStartScene.csに実装しました、
1 2 3 4 5 6 | // Menu Choose Update --> OnCallFromMenu() public void OnCallFromMenu(string sceneStr) { Debug.LogFormat ("--> OnCallFromMenu(ceneStr = {0})", sceneStr); SceneManager.LoadScene (sceneStr); //シーン遷移 } |
このOnCallFromMenu()関数で受信しました。
ここで、
SceneManager.LoadScene (sceneStr); //シーン遷移
が、次のシーンに遷移しています。
前回までの処理の概要でした。
ここから、「次のシーンに遷移」した時の処理が、以降の続きとなります。
全シーン共通で組み込んでいたSendUnityCtrller.cs内に
public class SendUnityCtrller : MonoBehaviour
で、次のシーンが表示始めた時に、void Start ()関数が動作します。
void Start ()の処理です。
1 2 3 4 5 6 7 8 9 10 | void Start () { sceneName = SceneManager.GetActiveScene ().name; if (sceneName == "StartScene") { //遅延表示 Invoke("TestSendToiOS", 3.0f);//Menu表示用 } else { InitNaviButton(); //Scene用のSwift作成Buttonの表示 } } |
InitNaviButton(); //Scene用のSwift作成Buttonの表示
は、シーン表示内に、1つのButtonを作成しました。
このButtonは、iOS側のメニューに戻るための処理となっています。
InitNaviButton();は、アレの同じでプラグイン処理で、iOSに送信してSwiftでButtonを作成して表示しています。
1 2 3 4 5 6 7 8 9 10 11 | //SendUnityCtrller.cs void InitNaviButton() { // Unityエディタ上なら何もしない #if UNITY_EDITOR Debug.Log("NOT IOS. DO NOTHING."); #elif UNITY_IOS // プラグインを初期化. PluginUnityCtrller.InitNaviButton(); //Scene用のSwift作成Buttonの表示 #endif } |
↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //PluginUnityCtrller.cs public class PluginUnityCtrller : MonoBehaviour { ・・・ [DllImport("__Internal")] private static extern void initNaviButton_(); ・・・ // プラグイン経由 //Scene用のSwift作成Buttonの表示 public static void InitNaviButton() { Debug.Log ("---- DeviceOpeToSwift()"); initNaviButton_(); } ・・・ } |
↓
1 2 3 4 5 6 7 8 9 10 11 12 13 | //PluginConnector.mm #import <Foundation/Foundation.h> #import "unityswift-Swift.h" // Required extern "C"{ ・・・ // MARK: -⚡----- initNaviButton_イベント // MARK: --プラグイン経由 Scene用のSwift作成Buttonの表示 void initNaviButton_() { [GateInUnity initNaviButton]; } ・・・ } |
これでプラグイン処理で、Unityからその後、Swift側のGateInUnity.swiftで initNaviButton( )を受信できました。
この次回で、「Unity3DとSwiftでiOSプログラミング~ シーンを作ろう」が 第1部(?)の終わりとなるでしょう。(のはず。。)
=・=・=
ではでは。。