在Unity3d中创建滑动GUI

本文介绍了如何在Unity3d中创建一个可滑动的GUI。通过创建GUITexture并附加GUIslider.js脚本,可以实现GUI元素跟随鼠标拖动的效果。同时,当鼠标处于抬起状态时,GUI会根据鼠标位置平滑移动。此外,还展示了如何使用OnMouseDrag、OnMouseUp和OnGUI事件来控制GUI按钮的显示和交互。
摘要由CSDN通过智能技术生成
功能实现:


1.创建一个GUITexture : create-> GUITexure;


   此时可以通过修改component 栏中的选项,改变gui的texture等;


   这样建立的GUITexture从属于整个屏幕平面,作为一个新的物体出现,他的位置不受camera的位置的影响,


   就是说,不管camera移动到哪里,这个GUI始终在你设定的位置;


2. 将GUIslider.js附加到GUITexture上;maincamera作为其参数,应该将camera指定到上面;


GUIslider.js:
*/
var mainCamera:Camera;//将你自己的camera赋值到这个camera上面
var customButton : GUIStyle;// 为新出现的GUI设置Style
private var newPosition:Vector3;// GUI移动后新的位置
private var MouseUp: boolean;//显示Mouse是够是Up状态
private var getPosition : int = 0;//得到鼠标离开GUI的帧数
private var subGuiShowUp : int = 0;//统计帧数,控制subGUI出现
function Update () {
  
  if(MouseUp){
  if(getPosition < 12)
  {
     newPosition.x = mainCamera.ScreenToViewportPoint(Input.mousePosition).x;
  getPosition +=1;
  }
 if(Mathf.Abs(transform.position.x - newPosition.x) > 0.00001){
  transform.position.x += (newPosition.x  - transform.position.x)*Time.deltaTime*6;
  }
 }
  }
function OnMouseDrag(){
 MouseUp = false;
 subGuiShowUp +=1;
 getPosition = 13;
 transform.position.x += (mainCamera.ScreenToViewportPoint(Input.mousePosition).x  - transform.position.x)*Time.deltaTime*10;
}
function OnMouseUp(){
 print(transform.position.x);
 MouseUp = true;
 getPosition = 0;
 //subGuiShowUp = 25;
}
function OnGUI(){
   if(MouseUp){
 if(subGuiShowUp < 12){
 GUI.Button (Rect (5,5,100,100), "Hello World", customButton);
 }
 }
}
function OnMouseDown(){
   subGuiShowUp = 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值