Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 (十)

彭博 发布于 2012/03/09 12:13
阅读 704
收藏 0

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







雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6933456



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


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








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







Main.cs 代码 


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 代码

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

#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项目我就不上传了,须要的自己导出。不早了,大家晚安,哇咔咔~~




原文链接: http://blog.csdn.net/xys289187120/article/details/6933456
加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部