在此代码中,我试图在不同位置的不同组中重新生成玩家。虽然代码将玩家成功传送到所需的位置,但是在二十分之后,玩家被传送到默认的重新生成的位置。
现在,这很好用。
有没有办法推迟player.Teleport()
的执行,这样玩家可以在游戏将玩家传送到默认位置后传送?
尝试Thread.Sleep
只会延误两个传送过程。
public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle)
{
player.Teleport(HQLocation1);
}
答案 0 :(得分:1)
如果没有参数可以这样做,你可以这样做:
public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle)
{
Invoke("TeleportPlayer", 5);
}
private void TeleportPlayer()
{
player.Teleport(HQLocation1);
}
如果您需要参数,可以使用协程:
public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle)
{
StartCoroutine(TeleportPlayer(some parameters));
}
private IEnumerator TeleportPlayer(some parameters)
{
// wait before doing other stuff
yield return new WaitForSeconds(5);
player.Teleport(HQLocation1);
}
答案 1 :(得分:0)
是否有任何方法可以延迟执行“player.Teleport” 在游戏将玩家传送到游戏后,玩家可以传送 默认位置?
是的,使用Invoke功能。第一个参数是要调用的函数,第二个参数是您希望它在调用函数之前等待多长时间。这也可以使用Coroutine
完成,但Invoke
更适合此简单任务。
public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle)
{
Invoke("Teleport", 2);
}
void Teleport(){
player.Teleport(HQLocation1);
}