日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)

發布時間:2025/3/13 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Unity3D 游戲引擎之IOS高級界面發送消息與Unity3D消息的接收


雨松MOMO原創文章如轉載,請注明:轉載自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6926746




? ? ? ? 剛搬家了新家超累,大家久等了。哇咔咔~ 今天和盆友們討論IOS的高級界面與Unity3D游戲引擎的交互,這個在開發中是非常重要的,Unity3D 畢竟是一個面向多平臺的一個游戲引擎,它不可能全部為IOS 考慮的面面俱到,引擎中也不存在針對IOS的高級界面的控件的使用。
? ? ? ? ?本例實現游戲背景是Unity3D 的游戲世界,前面添加4個IOS的高級界面的按鈕,并且點擊這些按鈕可以將消息傳遞給背景的Unity3D ,讓它做一些事情。

上一章介紹了觸摸IOS屏幕 移動攝像機的位置,下面有盆友問我說他不想移動攝像機的位置,就想移動物體的位置,我在這里補充一下,可以把腳本綁定在箱子上,參照物選擇為主攝像機,這樣子更新箱子的腳本就OK啦。今天例子,我就將腳本綁定在箱子上,如下圖所示,把Move腳本綁定在這個 Cube中。








先把Move腳本的代碼貼出來,這里面我寫了4個方法分別處理這個箱子的旋轉,這4個方法是由IOS上的代碼向Unity發送消息后調用的,下面我會介紹具體操作的方法。
var vrotate : Vector3; //向左旋轉 function MoveLeft() { var rotate : float = Time.deltaTime * 100; vrotate = Vector3.up * rotate; transform.Rotate(vrotate, Space.World); } //向右旋轉 function MoveRight() { var rotate : float = Time.deltaTime * 100; vrotate = Vector3.down* rotate; transform.Rotate(vrotate, Space.World); } //向上旋轉 function MoveUp(){ var rotate : float = Time.deltaTime * 100; vrotate = Vector3.right* rotate; transform.Rotate(vrotate, Space.World); } //向下旋轉 function MoveDown(){ var rotate : float = Time.deltaTime * 100; vrotate = Vector3.left* rotate; transform.Rotate(vrotate, Space.World); }

到這里盆友們可以將這個Unity工程導出成Xcode項目,不會的盆友請看我之前的文章哈,Xcode項目導出成功后,我們先添加4個高級界面的按鈕用來點擊響應上面腳本的這4個旋轉箱子的方法。
創建一個類繼承UIViewController,用來添加我們的高級界面的視圖,我暫且命名為MyView.
打開Unity3D導出的AppController.mm這個類,頭文件處先導入我們的這個類 #import "MyView"

找到下面這個方法,來添加view

int?OpenEAGL_UnityCallback(UIWindow** window,?int* screenWidth,?int* screenHeight,??int* openglesVersion)


EAGLView 是Unity3D 背景的那個View, 下面我們添加一個我們自己寫的View 覆蓋在它上面。


// Create a full-screen window _window = [[UIWindow alloc] initWithFrame:rect]; EAGLView* view = [[EAGLView alloc] initWithFrame:rect]; [_window addSubview:view]; MyView * myView = [[MyView alloc] init]; [_window addSubview:myView.view];


貼出MyView的代碼,寫完發現忘釋放內存了,呵呵,懶得改了,本章主要的介紹的不是這個哦。


// // MyView.m // Unity-iPhone // // Created by 雨松MOMO on 11-11-1. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "MyView.h" @implementation MyView // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; //創建label視圖 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)]; //設置顯示內容 label.text = @"雨松MOMO的程序世界"; //設置背景顏色 label.backgroundColor = [UIColor blueColor]; //設置文字顏色 label.textColor = [UIColor whiteColor]; //設置顯示位置居中 label.textAlignment = UITextAlignmentCenter; //設置字體大小 label.font = [UIFont fontWithName:[[UIFont familyNames] objectAtIndex:10] size:20]; //創建按鈕 UIButton *button0 = [UIButton buttonWithType:1]; //設置按鈕范圍 button0.frame = CGRectMake(0, 40, 100, 30); //設置按鈕顯示內容 [button0 setTitle:@"矩形左旋轉" forState:UIControlStateNormal]; //設置按鈕改變后 綁定響應方法 [button0 addTarget:self action:@selector(LeftButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //創建按鈕 UIButton *button1 = [UIButton buttonWithType:1]; //設置按鈕范圍 button1.frame = CGRectMake(0, 100, 100, 30); //設置按鈕顯示內容 [button1 setTitle:@"矩形右旋轉" forState:UIControlStateNormal]; //設置按鈕改變后 綁定響應方法 [button1 addTarget:self action:@selector(RightButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //創建按鈕 UIButton *button2 = [UIButton buttonWithType:1]; //設置按鈕范圍 button2.frame = CGRectMake(0, 160, 100, 30); //設置按鈕顯示內容 [button2 setTitle:@"矩形上旋轉" forState:UIControlStateNormal]; //設置按鈕改變后 綁定響應方法 [button2 addTarget:self action:@selector(UpButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //創建按鈕 UIButton *button3 = [UIButton buttonWithType:1]; //設置按鈕范圍 button3.frame = CGRectMake(0, 220, 100, 30); //設置按鈕顯示內容 [button3 setTitle:@"矩形下旋轉" forState:UIControlStateNormal]; //設置按鈕改變后 綁定響應方法 [button3 addTarget:self action:@selector(DownButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //向view添加 [self.view addSubview:label]; [self.view addSubview:button0]; [self.view addSubview:button1]; [self.view addSubview:button2]; [self.view addSubview:button3]; } //向左按鈕 -(void)LeftButtonPressed{ UnitySendMessage("Cube","MoveLeft",""); } //向右按鈕 -(void)RightButtonPressed{ UnitySendMessage("Cube","MoveRight",""); } //向上按鈕 -(void)UpButtonPressed{ UnitySendMessage("Cube","MoveUp",""); } //向下按鈕 -(void)DownButtonPressed{ UnitySendMessage("Cube","MoveDown",""); } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc. that aren't in use. } - (void)viewDidUnload { [super viewDidUnload]; } - (void)dealloc { [super dealloc]; } @end


這里我主要說一下下面這個方法,它是Unity底層幫我們寫好的一個方法,意思iPhone向向Unity發送消息,

參數1:場景中的模型名稱,Cube就是我們定義的一個箱子。

參數2:腳本方法名稱MoveLeft就是上面腳本中的方法,

參數3:為一個char *類型的 可以向Unity中傳遞數據。

UnitySendMessage("Cube","MoveLeft","");


我們可以向Unity3D中任意模型發送消息調用它綁定的腳本中的方法,當前前提是模型名稱、方法名稱、 參數都填寫正確。

這里4個按鈕都是以這種方式傳遞消息,下面是iPhone 真機的效果圖,我們觸摸點擊4個高級界面的按鈕可以實現Unity3D世界中的模型旋轉, ?所以大家一定要切記這個方法,很重要噢,哇咔咔~









最后歡迎各位盆友可以和MOMO一起討論Unity3D游戲開發,哇咔咔~~~ 附上Unity3D工程的下載地址,Xcode項目我就不上傳了,不早了,大家晚安,哇咔咔~~

下載地址:http://download.csdn.net/detail/xys289187120/3744724

轉載于:https://www.cnblogs.com/xuanyusong/archive/2011/11/02/2238538.html

總結

以上是生活随笔為你收集整理的Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。