(5)Unity3DとSwiftでiOSプログラミング~~ 電信開通‼
こんにちは、川上です。
今年の冬には、ラニーニャ現象の影響で日本周辺の気象環境が、とっても寒くなるそうです。
地球全体的の風の流れで「バタフライ効果」の「風が吹けば桶屋が儲かる」で冬将軍が強くなりすぎみたいとのこと。
寒い時には、ニャンコちゃんと同じで、あまり外出には避けています。
ー・ー・ー
先に記載していましたプラグインのDLとインストができた後、
UnityとiOSでの繋げ橋を作るように、幾つかのFileを作りましょう。
とりあえず、フォルダと空ファイル等で作ってしまいましょう。
・「Assets」ー「Scripts」ー「SendUnityCtrller.cs」
・「Assets」ー「Plugins」ー「PluginUnityCtrller.cs」
・「Assets」ー「Plugins」ー「iOS」ー「PluginConnector.mm」
・「Assets」ー「Plugins」ー「iOS」ー「GateInUnity.swift」
UnityとiOSの繋がる橋で移動する関数の流れは、
SendUnityCtrller.cs → PluginUnityCtrller.cs → PluginConnector.mm → GateInUnity.swift
になります。この流れのUnityとiOSの連携処理の仕組みは鉄板です!
とりあえず、関数の流れに錯誤がないように、Unityを起動させた後に、iOS側に通信して、iOS側に到着できてたらXcode上でのDebugLogで「着いたよ!」と確認してみました。
1.SendUnityCtrller.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 | using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; public class SendUnityCtrller : MonoBehaviour { // Use this for initialization void Start () { TestSendToiOS ();//<---- 通信開始! } // Update is called once per frame void Update () { } void TestSendToiOS() { // Unityエディタ上なら何もしない #if UNITY_EDITOR Debug.Log("NOT IOS. DO NOTHING."); #elif UNITY_IOS // プラグインを初期化. PluginUnityCtrller.TestSendToSwift(); #endif } } |
2.PluginUnityCtrller.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; public class PluginUnityCtrller : MonoBehaviour { [DllImport("__Internal")] private static extern void testSendToSwift_(); // プラグイン経由 //AdMobにSwift内Viewに入れる public static void TestSendToSwift() { Debug.Log ("---- TestSendToSwift()"); testSendToSwift_(); } } |
3.PluginConnector.mm
1 2 3 4 5 6 7 8 9 10 11 | //PluginConnector.mm #import <Foundation/Foundation.h> #import "unityswift-Swift.h" // Required extern "C"{ // MARK: -⚡️----- initAdMobToUnity_イベント // MARK: --プラグイン経由 Test通知をSwift内Viewに入れる void testSendToSwift_() { [GateInUnity testSendToSwift]; } } |
4.GateInUnity.swift
1 2 3 4 5 6 7 8 9 | import UIKit class GateInUnity: NSObject { //MARK: Test通知をSwift内Viewに入れる static func testSendToSwift() { print(" = Unity ==> testSendToSwift") //←到着しました } } |
4つのFileの作成後、SendUnityCtrller.csでUnityの入り口を仕込みましょう。
で、先の実行方法の
(3)Unity3DとSwiftでiOSプログラミングで作って、あ・そ・ぼ【構築編】
で、iOS実機をMacとUSBで繋いでおき、Unityで実行してみると。。。
Xcodeで最初にビルドする時に、下のエラーが出ると思うので、設定追加をしてくださいね。
Xcode上でのDebugLogを読めていけたらOKです。
ー・ー・ー
ではでは。。