【问题标题】:Unityscript transfer boolean value between functionsUnityscript 在函数之间传递布尔值
【发布时间】: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


【解决方案1】:

以下代码将显示 GUI 消息 5 秒钟,然后将其隐藏:

youdied.js
static var deathMessageShow : boolean = false;

function OnGUI()
{
    if(deathMessageShow)
    {
        GUI.Box(Rect(200,300,275,150),"You Died");

        // call the function HideDeathMessage() after five seconds
        Invoke("HideDeathMessage", 5.0f);
    }
}

function HideDeathMessage()
{
    deathMessageShow = false;
}

其他代码:

dead.js
function OnTriggerEnter()
{
    //code that resets environment
    youdied.deathMessageShow = true;
}

【讨论】:

    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2017-09-14
    相关资源
    最近更新 更多