大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

(5)Unity3DとSwiftでiOSプログラミング~~ 電信開通‼

株式会社クローバーフィールドの経営理念
著者:川上洋
公開日:2017/12/15
最終更新日:2018/06/21
カテゴリー:技術情報

こんにちは、川上です。

今年の冬には、ラニーニャ現象の影響で日本周辺の気象環境が、とっても寒くなるそうです。
地球全体的の風の流れで「バタフライ効果」の「風が吹けば桶屋が儲かる」で冬将軍が強くなりすぎみたいとのこと。

寒い時には、ニャンコちゃんと同じで、あまり外出には避けています。

ー・ー・ー

先に記載していましたプラグインの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

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

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

//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

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です。

ー・ー・ー
ではでは。。

    上に戻る