1

私はC#スクリプトを使用してUnityでプロジェクトに取り組んでいます。GUI.Boxが画面上部に表示されます。プレイヤーがその場を離れると、ボックスは消えます。プレイヤーが指定された場所を離れた後、ボックスをさらに3秒間そこにとどまらせるにはどうすればよいですか?

修正されたDanpeのコード(作業コード):

bool shown = false;

void OnGUI () {
if (car.transform.position.y>=43 && car.transform.position.y<=44)
{
    shown = true;
}
else if (shown)
{
    StartCoroutine(DisapearBoxAfter(3.0f)); 
}
if(shown) 
{
    GUI.Box(new Rect((Screen.width/2)-200,0,400,30) , "King of the hill");
}
}

IEnumerator DisapearBoxAfter(float waitTime) { 
// suspend execution for waitTime seconds
yield return new WaitForSeconds(waitTime);
shown = false;
}




void Update () {
    OnGUI ();
}
4

2 に答える 2

1
bool shown = false;

void OnGUI () {
    if (car.transform.position.y>=43 && car.transform.position.y<=44)
    {
        shown = true;
    }
    else if (shown)
    {
        StartCoroutine(DisapearBoxAfter(3.0)); 
    }
    if(shown) {
        GUI.Box(new Rect((Screen.width/2)-200,0,400,30) , "King of the hill");
    }
}

IEnumerator DisapearBoxAfter(float waitTime) {
    // suspend execution for waitTime seconds
    return yield WaitForSeconds (waitTime);
    shown = false;
}


void Update () {
    OnGUI ();
}
于 2012-08-26T20:17:55.963 に答える
0
function Start ()
{
    ShowBox ();
}

function ShowBox ()
{
    // show label
    show = true;

    // cancel invoking method if already set to call after 3 seconds
    CancelInvoke("HideBox");

    // will call HideBox () after 3 sec
    Invoke ("HideBox", 3.0F);
}

function HideBox ()
{
   // dont show label
   show = false;
}

function Update ()
{
     if (car.transform.position.y>=43 && car.transform.position.y<=44)
     {
         ShowBox ();
     }
}

function OnGUI ()
{
     if(shown) 
     {
          GUI.Box(new Rect((Screen.width/2)-200,0,400,30) , "King of the hill");
     }
}
于 2012-08-31T10:36:49.870 に答える