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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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


雨松MOMO原創(chuàng)文章如轉(zhuǎn)載,請(qǐng)注明:轉(zhuǎn)載自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6926746




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

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








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

到這里盆友們可以將這個(gè)Unity工程導(dǎo)出成Xcode項(xiàng)目,不會(huì)的盆友請(qǐng)看我之前的文章哈,Xcode項(xiàng)目導(dǎo)出成功后,我們先添加4個(gè)高級(jí)界面的按鈕用來點(diǎn)擊響應(yīng)上面腳本的這4個(gè)旋轉(zhuǎn)箱子的方法。
創(chuàng)建一個(gè)類繼承UIViewController,用來添加我們的高級(jí)界面的視圖,我暫且命名為MyView.
打開Unity3D導(dǎo)出的AppController.mm這個(gè)類,頭文件處先導(dǎo)入我們的這個(gè)類 #import "MyView"

找到下面這個(gè)方法,來添加view

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


EAGLView 是Unity3D 背景的那個(gè)View, 下面我們添加一個(gè)我們自己寫的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的代碼,寫完發(fā)現(xiàn)忘釋放內(nèi)存了,呵呵,懶得改了,本章主要的介紹的不是這個(gè)哦。


// // 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]; //創(chuàng)建label視圖 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)]; //設(shè)置顯示內(nèi)容 label.text = @"雨松MOMO的程序世界"; //設(shè)置背景顏色 label.backgroundColor = [UIColor blueColor]; //設(shè)置文字顏色 label.textColor = [UIColor whiteColor]; //設(shè)置顯示位置居中 label.textAlignment = UITextAlignmentCenter; //設(shè)置字體大小 label.font = [UIFont fontWithName:[[UIFont familyNames] objectAtIndex:10] size:20]; //創(chuàng)建按鈕 UIButton *button0 = [UIButton buttonWithType:1]; //設(shè)置按鈕范圍 button0.frame = CGRectMake(0, 40, 100, 30); //設(shè)置按鈕顯示內(nèi)容 [button0 setTitle:@"矩形左旋轉(zhuǎn)" forState:UIControlStateNormal]; //設(shè)置按鈕改變后 綁定響應(yīng)方法 [button0 addTarget:self action:@selector(LeftButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //創(chuàng)建按鈕 UIButton *button1 = [UIButton buttonWithType:1]; //設(shè)置按鈕范圍 button1.frame = CGRectMake(0, 100, 100, 30); //設(shè)置按鈕顯示內(nèi)容 [button1 setTitle:@"矩形右旋轉(zhuǎn)" forState:UIControlStateNormal]; //設(shè)置按鈕改變后 綁定響應(yīng)方法 [button1 addTarget:self action:@selector(RightButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //創(chuàng)建按鈕 UIButton *button2 = [UIButton buttonWithType:1]; //設(shè)置按鈕范圍 button2.frame = CGRectMake(0, 160, 100, 30); //設(shè)置按鈕顯示內(nèi)容 [button2 setTitle:@"矩形上旋轉(zhuǎn)" forState:UIControlStateNormal]; //設(shè)置按鈕改變后 綁定響應(yīng)方法 [button2 addTarget:self action:@selector(UpButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //創(chuàng)建按鈕 UIButton *button3 = [UIButton buttonWithType:1]; //設(shè)置按鈕范圍 button3.frame = CGRectMake(0, 220, 100, 30); //設(shè)置按鈕顯示內(nèi)容 [button3 setTitle:@"矩形下旋轉(zhuǎn)" forState:UIControlStateNormal]; //設(shè)置按鈕改變后 綁定響應(yīng)方法 [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


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

參數(shù)1:場(chǎng)景中的模型名稱,Cube就是我們定義的一個(gè)箱子。

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

參數(shù)3:為一個(gè)char *類型的 可以向Unity中傳遞數(shù)據(jù)。

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


我們可以向Unity3D中任意模型發(fā)送消息調(diào)用它綁定的腳本中的方法,當(dāng)前前提是模型名稱、方法名稱、 參數(shù)都填寫正確。

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









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

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

轉(zhuǎn)載于:https://www.cnblogs.com/xuanyusong/archive/2011/11/02/2238538.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。