//////////////////////////////2015/08/22////////////////////////
/////////////////////////////by xbw//////////////////////////////
///////////////////////////环境 unity4.6.1//////////////////
这个呢,是我自己想要的,这个虚拟按键呢在网上找了好多插件,对于人家的游戏适应的表现能力很好。然而在自己的游戏中并不适应,更没法用,思来想去还是自己写吗,早就想到了GUI的Button,索性就实现一下吧,先看一下效果图,
这几个就是Button,我的游戏中的按钮控制角色的移动也比较奇怪,非正常的运动,PC的按键对于这个Button的转换并不容易,先来看看代码,左右以及下的脚本
if (Input.GetKeyDown("left")) { if(lu==2) { transform.Translate(Vector3.left * 18.0f); lu = 1; } if(lu==3) { transform.Translate(Vector3.left * 18.0f); lu = 2; } } if (Input.GetKeyDown("right")) { if(lu==2) { transform.Translate(Vector3.right * 18.0f); lu = 3; } if(lu==1) { transform.Translate(Vector3.right * 18.0f); lu = 2; } }
这是键盘控制的左右,我的想法变成button的,这样呢,一开始我是直接把要实现的代码放在了GUI中,后来不管怎么点角色都不会移动,通过查找资料,发现这个程序的执行是有顺序的,UpDate跟OnGUI差的不是一点半点,先直线UpDate,并且还了解到,UpDate是每一帧都会执行,而OnGUI是没几帧执行,这是unity官方的解释,这样的话,把角色移动写在OnGUI中,就不会每一帧都渲染啦,角色就没有反应了,所以,我把那些程序做了个开关,用开关控制在UpDate中执行,这样立马爽了,看一下代码
if (GUI.Button(new Rect(0, Screen.height * 0.72f, Screen.width * 0.13f, Screen.height * 0.13f), "左")) { open = true; } else { } GUI.DrawTexture(new Rect(0, Screen.height * 0.72f, Screen.width * 0.13f, Screen.height * 0.13f), zuo1); GUI.DrawTexture(new Rect(0, Screen.height * 0.72f, Screen.width * 0.13f, Screen.height * 0.13f), zuo2); if (GUI.Button(new Rect(0, Screen.height * 0.87f, Screen.width * 0.13f, Screen.height * 0.13f), "右")) { open2 = true; } else { //open2 = false; } GUI.DrawTexture(new Rect(0, Screen.height * 0.87f, Screen.width * 0.13f, Screen.height * 0.13f), you1); GUI.DrawTexture(new Rect(0, Screen.height * 0.87f, Screen.width * 0.13f, Screen.height * 0.13f), you2); if (GUI.RepeatButton(new Rect(Screen.width * 0.92f, Screen.height*0.78f, Screen.height * 0.1f, Screen.height * 0.1f), "")) { open3 = true; open4 = true; } else { open3 = false; } GUI.DrawTexture(new Rect(Screen.width * 0.9f, Screen.height*0.75f, Screen.width * 0.1f, Screen.width * 0.1f), xia); GUI.DrawTexture(new Rect(Screen.width * 0.9f, Screen.height*0.75f, Screen.width * 0.1f, Screen.width * 0.1f), xia1);至于那个注释掉的以及空着的else中的语句在手机上运行是有问题的,之前在电脑上调试一点问题都没有,鼠标点击button角色是能左右的,然而在手机上,却没有效果,后来又想到了几帧执行一次,这样的话我们不能再else中关闭开关,我们要在角色移动后在UpDate中关闭开关,这样就好了,至于这个下,我们的角色会下滑,并且是持续的,这样我们用到了RepeatButton,这个按钮有着持续的功能,这样只要一直按着就会一直下滑,至于那个上,同理,这个没什么,都一样的,好了;;;;希望大家互相学习交流,有错误或者无法显现请留言,我会一一回复的,晚安啦baby们