一个关于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() {
// 这里可以添加每帧更新的逻辑
}

代码解释:

  1. 变量声明
    • windowRect:用于定义GUI窗口的位置和大小,初始位置在屏幕上方隐藏。
    • timetext:用于记录时间,辅助实现动画效果。
  2. Start函数:在脚本开始时调用,目前为空,你可以在此添加初始化逻辑。
  3. OnGUI函数
    • 使用GUI.Window创建一个窗口。
    • 通过判断鼠标位置,当鼠标位置的y坐标大于700时,使用AnimationCurve创建一个动画曲线,使窗口从隐藏位置跳出。
    • 当鼠标位置的y坐标小于等于700时,将windowRect.y的值递减,使窗口逐渐缩进。
  4. DoMyWindow函数:用于绘制窗口内的按钮,你可以在按钮点击事件中添加相应的逻辑。
  5. Update函数:每帧都会调用,目前为空,你可以在此添加每帧更新的逻辑。

通过上述代码,你可以实现类似QQ窗口放在边上的跳出和缩进效果。

作者信息

boke

boke

共发布了 3994 篇文章