Unity游戏结束时淡出延迟

时间:2014-10-27 18:00:24

标签: unity3d unityscript

我是Unity的新手,我正在尝试制作游戏。 当你在游戏结束时,我希望字幕渐渐消失。当你按下按钮时开始。 但是,当我编码我淡化的图像时,它会在您开始游戏时直接播放。 你们知道解决方案吗?

#pragma strict

private var guiShow : boolean = false;

var car : GameObject;
var rayLength = 10;
var guiObject : GUITexture;
var fadeTime = 1.0;
enum Fade {In, Out}
var fadesubtitles : boolean = false;


function Update ()
{
    var hit : RaycastHit;
    var fwd = transform.TransformDirection(Vector3.forward);

    if(Physics.Raycast(transform.position, fwd, hit, rayLength))
    {
        if(hit.collider.gameObject.tag == "car")
        {
                guiShow = true;
                if(Input.GetKeyDown("e"))
                {
                    guiShow = false;
                }   

                else if(Input.GetKeyDown("e"))
                {
                    guiShow = false;
                }
        }               
    }
    else
    {
    guiShow = false;
    }
}




function OnGUI()
{
    if(guiShow == true)
    {
        GUI.Box(Rect(Screen.width / 2, Screen.height / 2, 150, 25), "Press F to escape");
         if(Input.GetKeyDown("f")){
                fadesubtitles = true;
             }
     }
}
if (fadesubtitles == true){
             yield FadeGUITexture(guiObject, fadeTime, Fade.In);
             yield WaitForSeconds(3.0);
             yield FadeGUITexture(guiObject, fadeTime, Fade.Out);
}

function FadeGUITexture (guiObject : GUITexture, timer : float, fadeType : Fade) {
     if (subtitles == true){
     var start = fadeType == Fade.In? 0.0 : 1.0;
     var end = fadeType == Fade.In? 1.0 : 0.0;
     var i = 0.0;
     var step = 1.0/timer;

       while (i < 1.0) {
         i += step * Time.deltaTime;
         guiObject.color.a = Mathf.Lerp(start, end, i)*.5;
         yield;
       }
     }
}   

2 个答案:

答案 0 :(得分:0)

我会在“禁用”状态下启动您的游戏对象。 state(在检查器中取消选中)。然后在游戏结束时,有一些启用它的代码。

答案 1 :(得分:0)

您可以使用iTween

FadeFrom(GameObject target, Hashtable args)

示例:

iTween.FadeFrom(gameObject, iTween.Hash("alpha", 0f, "amount", 1f, "time", 2f));