一个关于GUI从窗外跳出和缩进的代码,像qq的放边上的效果
2015年03月15日 18:33
0 点赞
0 评论
更新于 2025-11-21 17:16
在实现GUI从窗外跳出和缩进的效果时,借助一些动画插件(如iTween)可以较为轻松地达成。不过,iTween这类插件是基于GameObject的,而本文要介绍的代码则是基于Unity自带的GUI实现该效果。
以下是具体的代码:
#pragma strict
var windowRect = Rect (0, -50, 200 , 50);
var timetext:float=0;
function Start() {
// 这里可以添加初始化逻辑
}
function OnGUI () {
windowRect = GUI.Window (0, Rect(0, windowRect.y, Screen.width, windowRect.height), DoMyWindow, "缩进窗口");
if (Input.mousePosition.y > 700) {
if (timetext == 0)
timetext = Time.time;
var anim = new AnimationCurve(
Keyframe (0, -50),
Keyframe (0.5, 10),
Keyframe (0.8, -5),
Keyframe (1.1, 3),
Keyframe (1.6, 0)
);
windowRect.y = anim.Evaluate(Time.time - timetext);
} else {
timetext = 0;
if (windowRect.y > -50)
windowRect.y--;
}
}
function DoMyWindow (windowID : int) {
if (GUI.Button (Rect (10, 20, 100, 20), "button1")) {
// 这里可以添加按钮1点击后的逻辑
}
if (GUI.Button (Rect (120, 20, 100, 20), "button2")) {
// 这里可以添加按钮2点击后的逻辑
}
if (GUI.Button (Rect (230, 20, 100, 20), "button3")) {
// 这里可以添加按钮3点击后的逻辑
}
}
function Update() {
// 这里可以添加每帧更新的逻辑
}
代码解释:
- 变量声明:
windowRect:用于定义GUI窗口的位置和大小,初始位置在屏幕上方隐藏。timetext:用于记录时间,辅助实现动画效果。
Start函数:在脚本开始时调用,目前为空,你可以在此添加初始化逻辑。OnGUI函数:- 使用
GUI.Window创建一个窗口。 - 通过判断鼠标位置,当鼠标位置的
y坐标大于700时,使用AnimationCurve创建一个动画曲线,使窗口从隐藏位置跳出。 - 当鼠标位置的
y坐标小于等于700时,将windowRect.y的值递减,使窗口逐渐缩进。
- 使用
DoMyWindow函数:用于绘制窗口内的按钮,你可以在按钮点击事件中添加相应的逻辑。Update函数:每帧都会调用,目前为空,你可以在此添加每帧更新的逻辑。
通过上述代码,你可以实现类似QQ窗口放在边上的跳出和缩进效果。