【发布时间】:2014-09-24 16:11:22
【问题描述】:
我在使用 Unityscript 时遇到了一些麻烦。
我想要做的是在触摸某些对象时出现一个 GUI 消息(然后在一段时间后消失)。我想我基本上已经解决了,但是消息会自动跳闸。
我尝试的解决方案是在 GUI 消息中设置一个条件部分,只允许它在布尔值为真时出现。然后在触摸对象时已经触发的不同脚本中,布尔值设置为 true,因此脚本可以运行,并将布尔值重置为 false。
但是我收到“您只能从 OnGUI 内部调用 GUI 函数。我不确定这意味着什么。
消息代码:
youdied.js
static var deathMessageShow : boolean = false;
function OnGUI() {
if(deathMessageShow == true){
if(Time.time >= 5 )
GUI.Box(Rect(200,300,275,150),"You Died");
}
deathMessageShow = false;
}
其他代码(截断):
dead.js
function OnTriggerEnter()
{
//code that resets environment
youdied.deathMessageShow = true;
}
任何关于正在发生的事情的建议或更好的解决方案将不胜感激。
【问题讨论】:
-
你真的应该把这个变量称为
isDeathMessageShown左右。每个人都希望deathMessage是一个字符串 :-) -
您应该真正考虑处理此代码的结构(您至少将
YouDied的实例存储在公共变量中,而不是使用静态变量)。也可能缺少一些上下文,但Time.time > 5可能不会做你想做的事。这意味着在游戏开始 5 秒后您将不再显示消息(任何消息,Time.time 是游戏开始后的时间[或者您在编辑器中按下了播放,这可能使它看起来像是在工作]) -
嗯,好吧,我应该怎么让它从触发的那一刻开始运行5秒?
标签: unity3d unityscript