unity3d用代码实例化一个button
在Unity3D中,我们可以使用代码来实现一些特定功能的按钮,下面将为大家介绍两种不同功能按钮的实现代码,供大家参考学习。
实现双击效果的按钮(使用两个按钮)
此方法通过两个按钮实现双击效果,点击第一个按钮会出现第二个按钮,在第二个按钮中编写相应事件。
var a = 0.0;
var b = 0;
function OnGUI() {
if (a == 0) {
if (GUI.Button(Rect(10, 10, 100, 20), "1")) {
a = 1;
}
}
if (a > 0 && a < 1) {
if (GUI.Button(Rect(10, 10, 100, 20), "2")) {
a = 0;
b = b - Time.deltaTime - 1;
}
}
}
function Update() {
if (a > 0) {
a = a - Time.deltaTime - 0.05;
if (a < 0) {
a = 0;
}
}
}
代码解释
OnGUI函数:这是Unity中用于绘制GUI元素的函数。在该函数中,首先判断a的值,如果a为0,则绘制第一个按钮 “1”,点击该按钮后将a的值设为1;如果a的值大于0且小于1,则绘制第二个按钮 “2”,点击该按钮后将a的值设为0,并更新b的值。Update函数:在每一帧都会调用该函数。当a大于0时,会不断减少a的值,当a小于0时,将其重置为0。
实现真正双击效果的按钮
在网络上找到一个类似的脚本,但那个脚本似乎离实现真正的双击效果还有段距离,因此对其内容进行了稍微修改,实现了一个具有真正双击效果的按钮。
原文出处
代码实现
private var ButtonClicked = false;
private var ResetTime = 0.0;
function OnGUI() {
if (GUI.Button(Rect(10, 10, 80, 50), "click me")) {
ResetTime = Time.time;
if (ButtonClicked) {
print("It's DoubleClick!");
// 可以在这里添加双击后的操作,例如 EquipItem... and stuff
ButtonClicked = false;
} else {
// 可以在这里添加单击后的操作,例如 DisplayItemInfo... and stuff
ButtonClicked = true;
}
}
}
function FixedUpdate() {
if (ResetTime + 0.5 < Time.time) {
ButtonClicked = false;
}
}
代码解释
OnGUI函数:同样用于绘制GUI元素。当点击 “click me” 按钮时,记录当前时间到ResetTime中。如果ButtonClicked为true,说明这是第二次点击,即实现了双击效果,打印 “It's DoubleClick!” 并将ButtonClicked重置为false;如果ButtonClicked为false,说明这是第一次点击,将ButtonClicked设为true。FixedUpdate函数:该函数以固定的时间间隔调用。当ResetTime加上0.5秒小于当前时间时,说明双击时间间隔已过,将ButtonClicked重置为false。
以上就是在Unity3D中使用代码实现不同功能按钮的方法,大家可以根据自己的需求进行修改和扩展。