跨平台这种事情不管多NB, 总要有些与原生系统交互的方法, 比如 Unity3D与iOS消息交互方法.
一: 建立一个空的Unity工程.
File --> New Project
二: 编写脚本文件 (Test.cs)
在Project选项卡中, create ->C# script, 命名为Test, 双击, 编写此cs文件.
1 using UnityEngine; 2 using System.Collections; 3 4 public class Main : MonoBehaviour { 5 6 //声明两个Texture变量,图片资源在外面连线赋值 7 public Texture Button0; 8 public Texture Button1; 9 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.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 (); } } }
三:绑定相关脚本到Main Camera
只拖动Test.cs文件到"Main Camera"上, 成功后, 可以在game view中看到效果图, 或者在Main Camera的Inspector中也能看到如: Test(Script)
ps: 在"Project"中添加图片文件作用button的图片, 也是用拖动的方法(选中Test.cs, 在Instpector中可以看到 Button0和1处无图片, 这时拖动图片文件到Button0和1上)
四: 导出iOS工程
Unity3D中的工作此时已经完成, 可以导出iOS工程了
File--> Build&Run
**:Unity3D中界面如下:
五: 在iOS工程中添加代码
添加两个文件 , 以接收Unity3D发来的消息
1 // 2 // MyView.h 3 // Unity-iPhone 4 // 5 // Created by willme on 13-10-15. 6 // 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface MyView : NSObject 12 13 @end
1 // 2 // MyView.m 3 // Unity-iPhone 4 // 5 // Created by willme on 13-10-15. 6 // 7 // 8 9 #import "MyView.h" 10 11 @implementation MyView 12 13 //接收Unity3D 传递过来的信息 14 void _PressButton0() 15 { 16 UIAlertView *alert = [[UIAlertView alloc] init]; 17 [alert setTitle:@"雨松MOMO程序世界"]; 18 [alert setMessage:@"点击了第一个按钮"]; 19 [alert addButtonWithTitle:@"确定"]; 20 [alert show]; 21 [alert release]; 22 } 23 24 void _PressButton1() 25 { 26 27 UIAlertView *alert = [[UIAlertView alloc] init]; 28 [alert setTitle:@"雨松MOMO程序世界"]; 29 [alert setMessage:@"点击了第二个按钮"]; 30 [alert addButtonWithTitle:@"确定"]; 31 [alert show]; 32 [alert release]; 33 } 34 35 @end
**界面如下:
***代码来自 http://blog.csdn.net/xys289187120/article/details/6933456
最后的效果