上一章介紹了IOS高級(jí)界面向Unity3D 發(fā)送消息與Unity3D 接收消息的過程,有去的消息當(dāng)然要有回的消息這樣的過程才算完美,本章MOMO向大家介紹Unity3D消息的回饋。
上一章介紹了IOS高級(jí)界面向Unity3D 發(fā)送消息與Unity3D 接收消息的過程,有去的消息當(dāng)然要有回的消息這樣的過程才算完美,本章MOMO向大家介紹Unity3D消息的回饋。
如下圖所示,本章我們的目標(biāo)是在Unity3D 界面中添加兩個(gè)GUI按鈕,并且在iPhone上點(diǎn)擊這兩個(gè)按鈕后分別彈出兩個(gè)IOS 高級(jí)界面的對(duì)話框。相信盆友們對(duì)GUI應(yīng)該不會(huì)太陌生,在這里我在前調(diào)一下GUI就是Unity3D 提供的一套UI系統(tǒng)。圖中的兩個(gè)UI 按鈕我就是用GUI做出來的。

Project欄目中創(chuàng)建一個(gè)c#腳本,命名為Main.cs ,之前沒有使用過 C#寫腳本,今天我用C#來寫這個(gè)腳本,哇咔咔~~~ 如下圖所示將腳本拖動(dòng)在攝像機(jī)上,腳本中聲明兩個(gè)Texture 類型變量用來保存按鈕繪制的圖片資源。

Main.cs 代碼
[代碼]c#/cpp/oc代碼:
02 |
using System.Collections; |
04 |
public class Main : MonoBehaviour { |
06 |
//聲明兩個(gè)Texture變量,圖片資源在外面連線賦值 |
07 |
public Texture Button0; |
08 |
public Texture Button1; |
10 |
// Use this for initialization |
15 |
// Update is called once per frame |
23 |
if(GUI.Button(new Rect(0,44,120,120),Button0)) |
25 |
//返回值為ture說明這個(gè)按鈕被點(diǎn)擊 |
26 |
SDK.ActivateButton0(); |
30 |
if(GUI.Button(new Rect(200,44,120,120),Button1)) |
32 |
//返回值為ture說明這個(gè)按鈕被點(diǎn)擊 |
33 |
SDK.ActivateButton1(); |
這里詳細(xì)說一下SDK這個(gè)類,這個(gè)類我們看作它是一個(gè)管理類,它不賦值在任意對(duì)象身上,只接受調(diào)用管理,點(diǎn)擊兩個(gè)按鈕后將分別調(diào)用下面方法中的_ActivateButton0() 與 _ActivateButton1(),而這兩個(gè)方法則是去調(diào)用xcode 我們自己實(shí)現(xiàn)的方法_pressButton0() 與 _pressButton1(), 前提上須下面代碼中的注冊(cè),這樣子導(dǎo)出項(xiàng)目的時(shí)候xcode會(huì)幫我們 生成注冊(cè)信息,我們只須要實(shí)現(xiàn)這兩個(gè)方法就可以了。
SDK.cs 代碼
[代碼]c#/cpp/oc代碼:
02 |
using System.Runtime.InteropServices; |
07 |
//導(dǎo)出按鈕以后將在xcode項(xiàng)目中生成這個(gè)按鈕的注冊(cè), |
08 |
//這樣就可以在xocde代碼中實(shí)現(xiàn)這個(gè)按鈕點(diǎn)擊后的事件。 |
09 |
[DllImport("__Internal")] |
10 |
private static extern void _PressButton0 (); |
12 |
public static void ActivateButton0 () |
15 |
if (Application.platform != RuntimePlatform.OSXEditor) |
17 |
//點(diǎn)擊按鈕后調(diào)用xcode中的 _PressButton0 ()方法, |
18 |
//方法中的內(nèi)容須要我們自己來添加 |
24 |
[DllImport("__Internal")] |
25 |
private static extern void _PressButton1 (); |
27 |
public static void ActivateButton1 () |
29 |
if (Application.platform != RuntimePlatform.OSXEditor) |
這樣子Unity3D 部分已經(jīng)完成,將Untiy3D項(xiàng)目導(dǎo)出成Xcode項(xiàng)目,我們用Xcode打開它。添加Unit3D中GUI按鈕點(diǎn)擊后的響應(yīng)事件。創(chuàng)建一個(gè)類命名為 MyView.h 、MyView.m,用它來接收Unity3D 回饋回來的消息,_PressButton0 與 _PressButton1 這兩個(gè)方法在Unity3D中已經(jīng)注冊(cè)過,所以在這個(gè)類中我們須要對(duì)它進(jìn)行Xcode中的實(shí)現(xiàn)。
MyView.m
[代碼]c#/cpp/oc代碼:
04 |
@implementation MyView |
10 |
UIAlertView *alert = [[UIAlertView alloc] init]; |
11 |
[alert setTitle:@"雨松MOMO程序世界"]; |
12 |
[alert setMessage:@"點(diǎn)擊了第一個(gè)按鈕"]; |
13 |
[alert addButtonWithTitle:@"確定"]; |
21 |
UIAlertView *alert = [[UIAlertView alloc] init]; |
22 |
[alert setTitle:@"雨松MOMO程序世界"]; |
23 |
[alert setMessage:@"點(diǎn)擊了第二個(gè)按鈕"]; |
24 |
[alert addButtonWithTitle:@"確定"]; |
OK大功告成,連上真機(jī)運(yùn)行我們的項(xiàng)目,我們?cè)趇Phone中點(diǎn)擊了Unity3D 中GUI這兩個(gè)按鈕后,通過消息的回饋順利的彈出IOS高級(jí)界面 的對(duì)話框,哇咔咔~