Unity中场景加载出现问题,解决方法是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中场景加载出现问题,解决方法是啥相关的知识,希望对你有一定的参考价值。

当选定后进入下一个背景后,下方出现Level 'Game' (-1) couldn't be loaded because it has not been added to the build settings.

这个提示告诉你,有些场景(scenes)还没有加载到build settings里,所以从当前场景(scenes)跳转到其他场景(scenes)时,不能加载其他场景(scenes)。你必须把所有要用到的 scenes 都加载到build settings的 scenes in buding列表里。方法:调入一个scenes后,点选FILE菜单的build settings选项,打开build settings菜单,然后点菜单里的“add current ”按钮。就可以看到,当前scenes加入build settings菜单列表。以此方法再打开其他scenes,然后加到uild settings菜单的 scenes in buding列表里。加完所有 scenes 后存储项目再运行,应该就不会出这个错误提示了。 参考技术A Ctrl+Shift+B 然后add current 然后Ctrl+S.

Unity带进度条加载场景及场变黑的解决方法

首先说加载场景显示进度条

简单的来说需要协程+Update

一直用UGUI,进度条就用Slider

别忘了引用

using UnityEngine.UI;
public Slider slider;

如果想在旁边显示个数字百分比,就再加个Text就好了

public Text text;

假设我们所在场景为old,要去往场景new,如何加载并显示进度呢

可以直接在old场景中做,也可以加一个中间场景专门显示加载进度

我们就加个中间场景吧,叫middle

而加载的进度条slder和百分比文字text就在此场景中建立

也就是说至少需要三个脚本

一个挂在old场景中,一个挂在middle场景中,还有一个脚本负责把场景new的名字从old场景中传递至middle场景

首先说传递场景名字的脚本

一句话

public class PassSceneName
{
        public static string SceneName;
}

old场景中的脚本两个动作
1.负责把要打开场景的名字传给PassSceneName
2.打开middle场景

public void GotoNewScene()
{
        PassSceneName.SceneName="new";
        SceneManager.LoadScene("middle");
}

这样,在进入middle场景后,可以通过PassSceneName.SceneName读取到要加载的场景名

而作为加载场景,显然是自动加载,可以在Start方法中就执行异步加载

public Slider slider;
public Text text;

public float speed = 1.0f;

private AsyncOperation op;

private void Start()
{
        StartCoroutine(loadScene());
}

Ienumerator loadScene()
{
        slider.value = 0f;
        op=SceneManager.LoadSceneAsync(PassSceneName.SceneName);
        op.allowSceneActivation = false;     //加载完成不自动切换
        yield return op;
}

private void Update()
{
        if(op != null)
        {
                float val = op.progress;
                slider.value = op.progress;
                int persent=(int)(val * 100);
                text.text = persent + "%";

                if(persent == 100)
                {
                        op.allowSceneActivation = true;      //允许加载完成后切换场景
                }
        }
}

如上,slider的值直接等于异步加载的进度值就好了

slider.value = op.progress;

而百分比文字则是进度x100再取整

在进度达到100%之前不允许自动切换场景,达到100%再允许

其实很简单

再说说加载场景,不亮的问题,也很简单

首先场景肯定用的是实时光设置

那么在lighting面板中
技术分享图片

首先把Auto Generate前的勾取消
技术分享图片
再点击 Generate Lighting按钮

与baked相同,也会在场景文件同级目录下生成一个同名的文件夹
技术分享图片
里面有一个LightingData,一个ReflectionProbe

但与baked不同的是,这个不算是烘焙场景,过程非常快,这样,以后再在程序运行时加载其场景,就不会进去场景变暗了

以上是关于Unity中场景加载出现问题,解决方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

unity中 加载大场景怎么解决

unity3D中动态加载物体的常用的方法

Unity场景打AssetBundle包,加载后天空盒材质丢失问题及解决

Three 解决加载模型闪烁

unity3d脚本不能加载

unity上一直出现打开visual的进度条