【问题标题】:Making a loading screen when player collides (doesnt work)播放器碰撞时制作加载屏幕(不起作用)
【发布时间】:2021-03-22 21:32:36
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;


public class LevelLoader : MonoBehaviour
{
void OnCollisionEnter(Collision col)
  {
    if (col.gameObject.tag == "Player");
    {
      StartCoroutine(LoadAsynchronously(1));
    }
  }

    IEnumerator LoadAsynchronously (int sceneIndex)
    {
       AsyncOperation operation = SceneManager.LoadSceneAsync(1);

       while (!operation.isDone)
       {
          yield return null;
       }
    }
}

我尝试改变一些东西,但如果有人可以帮助我,它无论如何都不起作用。应该在与该对象碰撞时工作,但 IDK 为什么什么也没发生

【问题讨论】:

  • 你能确定这个脚本附加到的游戏对象和玩家有碰撞器吗?
  • 碰撞是否有效?您是否尝试过在 OnCollisionEnter 中调试.log() 播放器?
  • 好吧,假设当你与触发的这个立方体发生碰撞时,玩家会完成关卡。 cdn.discordapp.com/attachments/353359492672520193/… 抱歉链接,但你也可以看到规格,如果你想了解更多关于属性的信息,请告诉我
  • 是的,碰撞应该是有效的,因为我创建了一个代码,当你与标签“敌人”碰撞时,你会破坏,IDK 什么可能不起作用
  • 你试过把“SceneManager.LoadScene(sceneIndex)”放在函数里吗?

标签: c# unity3d


【解决方案1】:

尝试为它做一个布尔标志

bool loadScene = false;

void OnCollisionEnter(Collision col)
  {
    if (col.gameObject.tag == "Player");
    {
      if(!loadScene){
      StartCoroutine(LoadAsynchronously(1));
      loadScene = true;
      }
    }
  }

【讨论】:

  • 好吧,我做到了media.discordapp.net/attachments/353359492672520193/…IDK,如果你有一些关于如何工作的建议。
  • 你试过了吗? OnCollisionEnter 将触发每一帧,因此将其设为 bool 标志以仅触发一次。
  • 问题是IDK怎么知道,如果我没有使用Unity Remote 5
猜你喜欢
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多