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不同的是,这个不算是烘焙场景,过程非常快,这样,以后再在程序运行时加载其场景,就不会进去场景变暗了
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:Unity带进度条加载场景及场景变暗的解决方法-创新互联
网站URL:http://scyanting.com/article/jiedh.html