共有9个场景。所有都添加在"构建设置"中。 9个中的7个场景正在加载,但当我尝试加载其他2个场景时,它一直在说:
场景' SceneName'无法加载,因为它尚未添加到构建设置或尚未加载AssetBundle。要将场景添加到构建设置,请使用菜单File-> Build Settings ... UnityEngine.SceneManagement.SceneManager:LoadSceneAsync(String,LoadSceneMode)MoreMountains.CorgiEngine.c__Iterator0:MoveNext()(在Assets / CorgiEngine / Common / Scripts中) /Managers/LoadingSceneManager.cs:88)UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)MoreMountains.CorgiEngine.LoadingSceneManager:Start()(在Assets / CorgiEngine / Common / Scripts / Managers / LoadingSceneManager.cs:67)
我已经在场景管理器中添加了场景,但它一直显示此错误。我已经尝试过这么多。请帮我解决问题。这是我的#34; LoadingSceneManager"脚本:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using MoreMountains.Tools;
using UnityEngine.SceneManagement;
namespace MoreMountains.CorgiEngine
{
public class LoadingSceneManager : MonoBehaviour
{
[Header("Binding")]
/// The name of the scene to load while the actual target scene is
loading (usually a loading screen)
public static string LoadingScreenSceneName="LoadingScreen";
[Header("GameObjects")]
/// the text object where you want the loading message to be displayed
public Text LoadingText;
/// the canvas group containing the progress bar
public CanvasGroup LoadingProgressBar;
/// the canvas group containing the animation
public CanvasGroup LoadingAnimation;
/// the canvas group containing the animation to play when loading is complete
public CanvasGroup LoadingCompleteAnimation;
[Header("Time")]
/// the duration (in seconds) of the initial fade in
public float StartFadeDuration=0.2f;
/// the speed of the progress bar
public float ProgressBarSpeed=2f;
/// the duration (in seconds) of the load complete fade out
public float ExitFadeDuration=0.2f;
/// the delay (in seconds) before leaving the scene when complete
public float LoadCompleteDelay=0.5f;
protected AsyncOperation _asyncOperation;
protected static string _sceneToLoad = "";
protected float _fadeDuration = 0.5f;
protected float _fillTarget=0f;
protected string _loadingTextValue;
/// <summary>
/// Call this static method to load a scene from anywhere
/// </summary>
/// <param name="sceneToLoad">Level name.</param>
public static void LoadScene(string sceneToLoad)
{
_sceneToLoad = sceneToLoad;
Application.backgroundLoadingPriority = ThreadPriority.High;
if (LoadingScreenSceneName!=null)
{
SceneManager.LoadScene(LoadingScreenSceneName);
}
}
/// <summary>
/// On Start(), we start loading the new level asynchronously
/// </summary>
protected virtual void Start()
{
_loadingTextValue=LoadingText.text;
if (_sceneToLoad != "")
{
StartCoroutine(LoadAsynchronously());
}
}
/// <summary>
/// Every frame, we fill the bar smoothly according to loading progress
/// </summary>
protected virtual void Update()
{
LoadingProgressBar.GetComponent<Image>().fillAmount = MMMaths.Approach(LoadingProgressBar.GetComponent<Image>().fillAmount,_fillTarget,Time.deltaTime*ProgressBarSpeed);
}
/// <summary>
/// Loads the scene to load asynchronously.
/// </summary>
protected virtual IEnumerator LoadAsynchronously()
{
// we setup our various visual elements
LoadingSetup();
// we start loading the scene
_asyncOperation = SceneManager.LoadSceneAsync(_sceneToLoad,LoadSceneMode.Single );
_asyncOperation.allowSceneActivation = false;
// while the scene loads, we assign its progress to a target that we'll use to fill the progress bar smoothly
while (_asyncOperation.progress < 0.9f)
{
_fillTarget = _asyncOperation.progress;
yield return null;
}
// when the load is close to the end (it'll never reach it), we set it to 100%
_fillTarget = 1f;
// we wait for the bar to be visually filled to continue
while (LoadingProgressBar.GetComponent<Image>().fillAmount != _fillTarget)
{
yield return null;
}
// the load is now complete, we replace the bar with the complete animation
LoadingComplete();
yield return new WaitForSeconds(LoadCompleteDelay);
// we fade to black
GUIManager.Instance.FaderOn(true,ExitFadeDuration);
yield return new WaitForSeconds(ExitFadeDuration);
// we switch to the new scene
_asyncOperation.allowSceneActivation = true;
}
/// <summary>
/// Sets up all visual elements, fades from black at the start
/// </summary>
protected virtual void LoadingSetup()
{
GUIManager.Instance.Fader.gameObject.SetActive(true);
GUIManager.Instance.Fader.GetComponent<Image>().color=new Color(0,0,0,1f);
GUIManager.Instance.FaderOn(false,ExitFadeDuration);
LoadingCompleteAnimation.alpha=0;
LoadingProgressBar.GetComponent<Image>().fillAmount = 0f;
LoadingText.text = _loadingTextValue;
}
/// <summary>
/// Triggered when the actual loading is done, replaces the progress bar with the complete animation
/// </summary>
protected virtual void LoadingComplete()
{
LoadingCompleteAnimation.gameObject.SetActive(true);
StartCoroutine(MMFade.FadeCanvasGroup(LoadingProgressBar,0.1f,0f));
StartCoroutine(MMFade.FadeCanvasGroup(LoadingAnimation,0.1f,0f));
StartCoroutine(MMFade.FadeCanvasGroup(LoadingCompleteAnimation,0.1f,1f));
}
}
}
答案 0 :(得分:3)
答案 1 :(得分:1)
我知道这个问题很旧,但是我的答案对于某些遇到这个问题的人仍然很有价值。添加到建筑物中的场景应避免使用更多奇特的角色,例如德国变音符“äöÜß”或simmilar。而且最好也避免使用空格字符-因为它们可能包含其他一些符号,然后您怀疑并因此引起麻烦。特别是当您复制并粘贴它们的名称时。因此,最好坚持使用纯ASCII字母,并用连字符或下划线替换所有空格。
答案 2 :(得分:0)
答案 3 :(得分:0)
或者你可以使用它们的索引值来更简单的方法,而不是使用字符串
SceneManager.LoadScene(0);
然后通过打开构建设置窗口
添加所有这些场景答案 4 :(得分:0)
看起来你试图用名称加载场景:'SceneName'。
答案 5 :(得分:0)
请检查您的功能“LoadScene”。
我不确定究竟是什么问题,但是根据您的日志问题出现在“LoadScene”功能中。
答案 6 :(得分:0)
由于某种原因,我在“构建设置”中正确添加了所有场景,但是在编辑器中运行游戏时仍然抛出错误(为Android构建没有问题)。
我刚刚从“构建设置”中删除了所有场景,然后又重新添加了它们。之后就没问题了。