如何暂停GameObject几秒钟,并在unity3d中几秒后取消暂停

时间:2016-09-10 21:43:27

标签: c# css unity3d seconds pause

我需要gameobject在我的场景中暂停7f或8f,并在2f处自行暂停。我的脚本让我按键暂停。这是我的剧本:

{



sing UnityEngine;
using System.Collections;

public class star : MonoBehaviour {
GameObject[] pauseObjects;


	void Start () {
	pauseObjects = GameObject.FindGameObjectsWithTag("Player");
	}
	


void pauseGameobject()

{

if()

{

start coroutine("wait");

}

}

public ienumenator wait()

{

time.timescale = 0;

yield return new waitforsceonds(7);

time.timesale = 1;

}
void pauseGameobject()

{

if()

{

start coroutine("wait");

}

}

public ienumenator wait()

{

time.timescale = 0;

yield return new waitforsceonds(7);

time.timesale = 1;

}




}

2 个答案:

答案 0 :(得分:0)

暂停它的意思并不太清楚你的意思,但我会广泛回答,试着帮助你。

如果您想在外部暂停一个游戏对象,可以停用它并使用以下代码相应地激活它:gameObject.SetActive(false);

相反,如果你想在内部暂停游戏对象,你可以制作一个bool并且在更新测试中是否真的如此:

using UnityEngine;
using System.Collections;

bool update = false

public class ActiveObjects : MonoBehaviour
{
    void Start ()
    {
        //Do stuff
    }

    void Update ()
    {
        if(update){
            //Do stuff
        }
        //decide wether or not to pause the game object
    }
}

如果您想暂停游戏,可以将Time.timeScale设置为0,或者暂停所有游戏对象。

Here您可以找到如何制作计时器,您只需使用timeLeft -= Time.deltaTime;倒计数变量。

希望我帮助你,

亚历

编辑: 好的,这是脚本,请记住我无法测试它;)

using UnityEngine;
using System.Collections;

public class star : MonoBehaviour {
GameObject[] pauseObjects;

public float timer = 7;

float t = 0;
bool pause = false;

void Start () {
    pauseObjects = GameObject.FindGameObjectsWithTag("Player");
    t = timer;
}



void Update() {
    if(pause){
        if(t<0){
            t=timer;
            pause = false;
            time.timescale = 1;
        }else{
            t -= Time.deltaTime;
            time.timescale = 0;
        }
    }
}

答案 1 :(得分:0)

您可以使用coroutinesupdate()循环中插入延迟。协同程序使用生成器来生成&#34;而不是返回&#34;返回的函数/方法。这允许的代码是异步操作的代码,同时仍以线性方式编写。

您最有可能寻找的内置协程WaitForSeconds。要启动协程,您只需调用StarCoroutine()并传入IEnumerator类型的任何方法。此方法将定期yield。在以下示例中,WaitForSeconds(5)将在5秒后生成。也可以使用一秒的分数,用浮点数表示,例如2.5将是两秒半。

using UnityEngine;
using System.Collections;

public class WaitForSecondsExample : MonoBehaviour {
    void Start() {
        StartCoroutine(Example());
    }

    IEnumerator Example() {
        Debug.Log(Time.time); // time before wait
        yield return new WaitForSeconds(5);
        Debug.Log(Time.time); // time after wait
    }
}