【问题标题】:Game freezes after the button is pressed按下按钮后游戏冻结
【发布时间】:2020-07-31 11:18:54
【问题描述】:

您好,我正在为我的游戏制作一个开始按钮,但是当我按下它时,游戏会冻结 3-4 秒,然后加载下一个场景。我只是想让它等待1然后切换场景。

IEnumerator Play(){
    isPressed = true;
    sprite.enabled = false;
    click = true;
    myAudio.Play();
    particle.Play();

    yield return new WaitForSeconds(1);
    SceneManager.LoadScene("dupa menu1");
}
 public void pressButt(){
    StartCoroutine(Play());
   
}

我将 pressButt 变量放在 UI 按钮 On Click() 上

谢谢

【问题讨论】:

  • 我不知道您使用的是什么结构,但根据您的描述,我认为 SceneManager.LoadScene("dupa menu1");正在运行时加载。所以,问题是,你在运行时加载的所有东西都需要时间才能加载到你的游戏中。所以,我的建议是在游戏启动时加载你需要的所有场景,并根据成就和游戏解锁调用所需的场景已经加载。
  • @integer 对于较大的项目,这可能会非常快地使内存过载...您通常只想加载您实际需要的内容..当然这取决于个人用例,并且总是有这个内存使用与加载延迟之间的权衡
  • @derHugo 但它是一个小游戏,我想在菜单场景和仅包含画布、1 个图像和 2 个文本框的场景之间切换。但是当我从画布场景切换到实际游戏场景时,它并没有冻结

标签: c# visual-studio unity3d


【解决方案1】:

您的逻辑设计不正确,因为在 WaitForSeconds(1) 之后场景需要时间加载,它不会在 1 秒后立即启动。

做类似事情或解决问题的最佳方法是使用SceneManager.LoadSceneAsync

【讨论】:

  • 我不会说它是“不正确的”.. 它只是同步的,因此会冻结片刻。同样使用SceneManager.LoadSceneAsync 仍然需要相同的时间,直到场景被加载..这只是解决了一些冻结;)
猜你喜欢
  • 2018-05-27
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2015-07-05
  • 2013-01-30
  • 1970-01-01
相关资源
最近更新 更多