Unity3D 游戏引擎之回馈iOS高级界面消息

移动开发 iOS 游戏开发
上一章介绍了IOS高级界面向Unity3D 发送消息与Unity3D 接收消息的过程,有去的消息当然要有回的消息这样的过程才算完美,本章MOMO向大家介绍Unity3D消息的回馈。

 上一章介绍了IOS高级界面向Unity3D 发送消息与Unity3D 接收消息的过程,有去的消息当然要有回的消息这样的过程才算完美,本章MOMO向大家介绍Unity3D消息的回馈。

 

如下图所示,本章我们的目标是在Unity3D 界面中添加两个GUI按钮,并且在iPhone上点击这两个按钮后分别弹出两个IOS 高级界面的对话框。相信盆友们对GUI应该不会太陌生,在这里我在前调一下GUI就是Unity3D 提供的一套UI系统。图中的两个UI 按钮我就是用GUI做出来的。

 

 

 

 

 

 

Project栏目中创建一个c#脚本,命名为Main.cs ,之前没有使用过 C#写脚本,今天我用C#来写这个脚本,哇咔咔~~~ 如下图所示将脚本拖动在摄像机上,脚本中声明两个Texture 类型变量用来保存按钮绘制的图片资源。

 

 

 

 

 

 

Main.cs 代码 

 

[代码]c#/cpp/oc代码:

01 using UnityEngine; 
02 using System.Collections; 
03    
04 public class Main : MonoBehaviour { 
05    
06 //声明两个Texture变量,图片资源在外面连线赋值 
07 public Texture Button0; 
08 public Texture Button1; 
09    
10     // Use this for initialization 
11     void Start () { 
12        
13     } 
14        
15     // Update is called once per frame 
16     void Update () { 
17        
18     } 
19        
20     //这个方法用于绘制 
21     void OnGUI() { 
22         //绘制两个按钮 
23         if(GUI.Button(new Rect(0,44,120,120),Button0)) 
24         { 
25             //返回值为ture说明这个按钮被点击 
26             SDK.ActivateButton0(); 
27         }    
28            
29         //绘制两个按钮 
30         if(GUI.Button(new Rect(200,44,120,120),Button1)) 
31         { 
32             //返回值为ture说明这个按钮被点击 
33             SDK.ActivateButton1(); 
34         }    
35     } 
36 }

这里详细说一下SDK这个类,这个类我们看作它是一个管理类,它不赋值在任意对象身上,只接受调用管理,点击两个按钮后将分别调用下面方法中的_ActivateButton0() 与 _ActivateButton1(),而这两个方法则是去调用xcode 我们自己实现的方法_pressButton0() 与 _pressButton1(), 前提上须下面代码中的注册,这样子导出项目的时候xcode会帮我们 生成注册信息,我们只须要实现这两个方法就可以了。

 

SDK.cs 代码

 

[代码]c#/cpp/oc代码:

01 using UnityEngine; 
02 using System.Runtime.InteropServices; 
03    
04 public class SDK 
05
06         
07      //导出按钮以后将在xcode项目中生成这个按钮的注册, 
08      //这样就可以在xocde代码中实现这个按钮点击后的事件。 
09      [DllImport("__Internal")] 
10      private static extern void _PressButton0 (); 
11         
12      public static void ActivateButton0 () 
13      { 
14            
15         if (Application.platform != RuntimePlatform.OSXEditor)  
16         { 
17             //点击按钮后调用xcode中的 _PressButton0 ()方法, 
18             //方法中的内容须要我们自己来添加 
19             _PressButton0 (); 
20         } 
21      } 
22         
23      //和上面一样 
24      [DllImport("__Internal")] 
25      private static extern void _PressButton1 (); 
26         
27      public static void ActivateButton1 () 
28      { 
29         if (Application.platform != RuntimePlatform.OSXEditor)  
30         { 
31             _PressButton1 (); 
32         } 
33      } 
34    
35 }

这样子Unity3D 部分已经完成,将Untiy3D项目导出成Xcode项目,我们用Xcode打开它。添加Unit3D中GUI按钮点击后的响应事件。创建一个类命名为 MyView.h 、MyView.m,用它来接收Unity3D 回馈回来的消息,_PressButton0 与 _PressButton1 这两个方法在Unity3D中已经注册过,所以在这个类中我们须要对它进行Xcode中的实现。

 

 

MyView.m

 

[代码]c#/cpp/oc代码:

01 #import "MyView.h"   
02    
03    
04 @implementation MyView   
05    
06 //接收Unity3D 传递过来的信息 
07    
08 void _PressButton0() 
09
10     UIAlertView *alert = [[UIAlertView alloc] init]; 
11     [alert setTitle:@"雨松MOMO程序世界"]; 
12     [alert setMessage:@"点击了第一个按钮"]; 
13     [alert addButtonWithTitle:@"确定"]; 
14     [alert  show];   
15     [alert release]; 
16
17    
18 void _PressButton1() 
19
20        
21     UIAlertView *alert = [[UIAlertView alloc] init]; 
22     [alert setTitle:@"雨松MOMO程序世界"]; 
23     [alert setMessage:@"点击了第二个按钮"]; 
24     [alert addButtonWithTitle:@"确定"]; 
25     [alert  show];   
26     [alert release]; 
27
28 @end

OK大功告成,连上真机运行我们的项目,我们在iPhone中点击了Unity3D 中GUI这两个按钮后,通过消息的回馈顺利的弹出IOS高级界面 的对话框,哇咔咔~


 

 

 

 

责任编辑:冰凝儿
相关推荐

2012-12-24 08:56:15

iOSUnity3D

2012-12-24 08:40:12

2012-12-24 08:46:50

iOSUnity3D

2012-12-24 09:01:41

iOSUnity3D

2012-12-24 08:48:25

iOSUnity3D

2012-12-24 09:04:04

iOSUnity3D

2012-12-24 08:50:21

iOSUnity3D

2012-12-24 08:52:44

iOSUnity3D

2012-12-24 08:59:13

iOSUnity3D

2012-12-24 08:45:19

iOSUnity3D

2012-12-24 08:54:47

iOSUnity3D

2012-12-24 09:06:14

iOSUnity3D

2012-12-24 08:51:23

iOSUnity3D

2013-04-25 00:06:06

unity3D手机游戏引擎

2012-12-24 09:07:09

iOSUnity3D

2012-12-24 09:11:58

iOSUnity3D

2012-12-24 09:00:31

iOSUnity3D

2012-12-24 09:02:48

iOSUnity3D

2013-04-25 09:56:24

unity3D手机游戏引擎

2012-12-24 09:09:27

AndoidUnity3D
点赞
收藏

51CTO技术栈公众号