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

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

(21)Unity3DとSwiftでiOSプログラミング~ シーンを作ろう【実装編4】

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

こんにちは。川上です。

UnityからiOSへ送信をした後なので、今回には、iOSからUnityに返信してみましょう。
UnityからiOSへの送信方法でしたのは、Plugin処理の方法でした。

コーディング言語を翻訳するには、
C# → ObjectiveC(C++) → Swift
での流れがありました。

C#側の送信からには、複数の引数を持った処理をSwiftに渡れています。
変数の型は、ObjectiveC(C++) でコンバートしてから、Swiftに渡れています。

一方、SwiftからC#の返信には、文字型の引数の1つのみを持ってのUnitySendMessage処理となります。

「StartScene」でiOS側で表示したメニューは、
let menuItems = [“シーン1″,”シーン2″,”シーン3″,”シーン4″,”シーン5”]
で、TableView()を持っています。
TableView()の選択した位置のデータを取得して、Unityに送信して、「Scene1」~「Scene5」のシーンを表示していくシーケンスとなります。

今のSwiftのコーディングは、Swift3.2で書いていますからね〜。
また、Swiftで書いた後は、Unity側へコピペを忘れずね。

import Foundation
import UIKit
import GoogleMobileAds

class NaniMenuViewController: UIViewController ,UITableViewDelegate, UITableViewDataSource{
     ・・・・・
   // MARK: --- ⚡ Cellが選択された際に呼び出される.
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        print("Value: \(menuItems[indexPath.row])")

        let retstr = String(format:"Scene%d",indexPath.row + 1)
        // unity側にSnapShatする.
        UnitySendMessage("StageScnes", "OnCallFromMenu", retstr)

        // MARK: ++++ ModalViewを閉じる。
        self.navigationController?.dismiss(animated: true, completion: nil);
        
    }

	・・・・・
}

iOSからUnityから送信できる関数は、
// unity側にSnapShatする.
UnitySendMessage(“StageScnes”, “OnCallFromMenu”, retstr)
となります。

retstrが文字型の引数になります。
UnitySendMessage(“StageScnes”, “OnCallFromMenu”, retstr)

“StageScnes”のGameObjectが持っている”OnCallFromMenu”関数に、retstr を持って送れ
の話になっています。
“StageScnes”のGameObjectのスクリプトは、StartScene.csに組み込んでいます。

Unity側で受信した”OnCallFromMenu”関数で、シーン遷移をします。

//StartScene.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // <--- シーン遷移用

public class StartScene : MonoBehaviour {
・・・
// Menu Choose Update --> OnCallFromMenu()
	public void OnCallFromMenu(string sceneStr) {
		Debug.LogFormat ("--> OnCallFromMenu(ceneStr = {0})", sceneStr);
		SceneManager.LoadScene (sceneStr); 	//シーン遷移
		
	}
・・・
}

で、選択したシーンで表示できたと思います。
次回は、シーン遷移後からメニューに戻れるようするお話へ、つ・づ・く(のつもり)・・です。

=・ー・=
ではでは。。

    上に戻る