玩游戏时团结真的很慢



当我点击播放时,速度非常慢,因为如果我再次点击播放,它需要一段时间才能停止,在不同的选项卡之间交换很慢,甚至在统一窗口中移动也很慢。这是我小小的奇异脚本,以防我搞砸了。我以前做过教程,它离还差得很远

using UnityEngine;
using System.Threading;
public class HungerSystem : MonoBehaviour
{
public int hunger;
public int hungerMultiplier;
void Update() {
if (hunger < 1000) {
hunger = hunger + (1 * hungerMultiplier);
Thread.Sleep(1000);
Debug.Log("Me Hungory");
}
}

}

不要使用Thread.Sleep(1000(;如果您想等待1秒来执行Debug.Log("Me Hungory"(;您可以使用corroutine或invoke

void Update() {
if (hunger < 1000) {
hunger = hunger + (1 * hungerMultiplier);
Invoke("DisplayMessage",1f)
}
}
private void DisplayMessage()
{
Debug.Log("Me Hungory");
}

如果您只想在饥饿感为==或饥饿感>=时显示消息1000只需放入并使用功能显示消息。您永远不想放慢更新速度,因为更新是在每一帧中调用的。

我不确定使用Thread的复杂性。特别是睡眠,但根据我的经验,睡眠功能通常不是处理情况的最佳方式。

我会选择使用WaitForSeconds yield指令的Coroutine。这是Unity的异步代码内置系统,应该会获得与您发布的结果相同的结果。

using UnityEngine;
using System.Collections;
public class HungerSystem : MonoBehaviour
{
public int hunger;
public int hungerMultiplier;
void Start() => StartCoroutine(DoHungryRoutine());

IEnumerator DoHungryRoutine()
{
while (true)
{
if (hunger < 1000)
{        
hunger = hunger + (1 * hungerMultiplier);
Debug.Log("Me Hungory");
yield return WaitForSeconds(1);
}
yield return null;
}
}
}

最新更新