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

こんにちは。川上です。
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側へコピペを忘れずね。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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”関数で、シーン遷移をします。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //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); //シーン遷移  } ・・・ } | 
で、選択したシーンで表示できたと思います。
 次回は、シーン遷移後からメニューに戻れるようするお話へ、つ・づ・く(のつもり)・・です。
=・ー・=
 ではでは。。


