上一章介紹了IOS高級界面向Unity3D 發送消息與Unity3D 接收消息的過程,有去的消息當然要有回的消息這樣的過程纔算完美,本章MOMO向大家介紹Unity3D消息的回饋。
如下圖所示,本章我們的目標是在Unity3D 界面中添加兩個GUI按鈕,並且在iPhone上點擊這兩個按鈕後分別彈出兩個IOS 高級界面的對話框。相信盆友們對GUI應該不會太陌生,在這裏我在前調一下GUI就是Unity3D 提供的一套UI系統。圖中的兩個UI 按鈕我就是用GUI做出來的。
Project欄目中創建一個c#腳本,命名爲Main.cs ,之前沒有使用過 C#寫腳本,今天我用C#來寫這個腳本,哇咔咔~~~ 如下圖所示將腳本拖動在攝像機上,腳本中聲明兩個Texture 類型變量用來保存按鈕繪製的圖片資源。
Main.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
29
30
31
32
33
34
35
36
|
using
UnityEngine;
using
System.Collections;
public
class
Main
:
MonoBehaviour
{
//聲明兩個Texture變量,圖片資源在外面連線賦值
public
Texture
Button0;
public
Texture
Button1;
//
Use this for initialization
void
Start
()
{
}
//
Update is called once per frame
void
Update
()
{
}
//這個方法用於繪製
void
OnGUI()
{
//繪製兩個按鈕
if(GUI.Button(new
Rect(0,44,120,120),Button0))
{
//返回值爲ture說明這個按鈕被點擊
SDK.ActivateButton0();
}
//繪製兩個按鈕
if(GUI.Button(new
Rect(200,44,120,120),Button1))
{
//返回值爲ture說明這個按鈕被點擊
SDK.ActivateButton1();
}
}
}
|
這裏詳細說一下SDK這個類,這個類我們看作它是一個管理類,它不賦值在任意對象身上,只接受調用管理,點擊兩個按鈕後將分別調用下面方法中的_ActivateButton0() 與 _ActivateButton1(),而這兩個方法則是去調用xcode 我們自己實現的方法_pressButton0() 與 _pressButton1(), 前提上須下面代碼中的註冊,這樣子導出項目的時候xcode會幫我們 生成註冊信息,我們只須要實現這兩個方法就可以了。
SDK.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
29
30
31
32
33
34
35
|
using
UnityEngine;
using
System.Runtime.InteropServices;
public
class
SDK
{
//導出按鈕以後將在xcode項目中生成這個按鈕的註冊,
//這樣就可以在xocde代碼中實現這個按鈕點擊後的事件。
[DllImport("__Internal")]
private
static
extern
void
_PressButton0
();
public
static
void
ActivateButton0
()
{
if
(Application.platform
!=
RuntimePlatform.OSXEditor)
{
//點擊按鈕後調用xcode中的 _PressButton0 ()方法,
//方法中的內容須要我們自己來添加
_PressButton0
();
}
}
//和上面一樣
[DllImport("__Internal")]
private
static
extern
void
_PressButton1
();
public
static
void
ActivateButton1
()
{
if
(Application.platform
!=
RuntimePlatform.OSXEditor)
{
_PressButton1
();
}
}
}
|
這樣子Unity3D 部分已經完成,將Untiy3D項目導出成Xcode項目,我們用Xcode打開它。添加Unit3D中GUI按鈕點擊後的響應事件。創建一個類命名爲MyView.h 、MyView.m,用它來接收Unity3D 回饋回來的消息,_PressButton0 與 _PressButton1 這兩個方法在Unity3D中已經註冊過,所以在這個類中我們須要對它進行Xcode中的實現。
MyView.m
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
|
#import "MyView.h"
@implementation
MyView
//接收Unity3D 傳遞過來的信息
void
_PressButton0()
{
UIAlertView
*alert
=
[[UIAlertView
alloc]
init];
[alert
setTitle:@"雨松MOMO程序世界"];
[alert
setMessage:@"點擊了第一個按鈕"];
[alert
addButtonWithTitle:@"確定"];
[alert show];
[alert
release];
}
void
_PressButton1()
{
UIAlertView
*alert
=
[[UIAlertView
alloc]
init];
[alert
setTitle:@"雨松MOMO程序世界"];
[alert
setMessage:@"點擊了第二個按鈕"];
[alert
addButtonWithTitle:@"確定"];
[alert show];
[alert
release];
}
@end
|
OK大功告成,連上真機運行我們的項目,我們在iPhone中點擊了Unity3D 中GUI這兩個按鈕後,通過消息的回饋順利的彈出IOS高級界面 的對話框,哇咔咔~
最後歡迎各位盆友可以和MOMO一起討論Unity3D遊戲開發,冬天就要來啦大家注意添加衣服,注意身體健康噢。哇咔咔~~~ 附上Unity3D工程的下載地址,Xcode項目我就不上傳了,須要的自己導出。不早了,大家晚安,哇咔咔~~
width="250" height="239" frameborder="0" scrolling="no" src="http://widget.weibo.com/relationship/bulkfollow.php?language=zh_cn&uids=2332920021,2470126495&wide=1&color=C2D9F2,FFFFFF,0082CB,666666&showtitle=1&showinfo=1&sense=0&verified=1&count=2&refer=http%3A%2F%2Fwww.xuanyusong.com%2Farchives%2F521&dpc=1" style="margin: 0px; padding: 0px; font-family: inherit;">