Loading界面的制作(二)

本篇博客深入探讨了Unity中制作Loading界面的代码实现,利用单例类保存场景名称以确保数据在场景切换间不丢失。通过触摸屏幕触发场景过渡,从登录界面到加载界面,再在后台异步加载资源。详细介绍了如何配置Unity的Build Settings以确保场景能正确加载,以及在加载过程中的前台交互处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一篇的博客中,我主要介绍了一些Loading界面制作上的理论知识,比如比较基础的场景制作中所需要的屏幕分辨率自适应效果,以及异步加载游戏场景中所需要的协同程序和异步加载关卡方法。


本篇博客中,我们将继续上一次的步骤,讲述Loading界面制作过程中的一些具体的代码部分。


由于Loading的脚本需要知道下一个加载的场景是什么,而这是需要上一个场景告诉它的,在场景切换之间,数据会丢失,而单例类的数据会一直保留,所以这里我们要用单例类来记录场景名称。


所谓的单例类,就是要保证一个类只有一个实例,并提供访问他的全局访问点。因为单例类的数据是全局访问的,所将要加载的场景的名称会一直保留,方便我们进行场景的切换。

public class Global {  


    public string loadName;  


      


    private static Global instance;  


    public static Global GetInstance()  


    {  


        if (instance == null)  


            instance = new Global();  


          


        return instance;  


    }  


}  

这里有一个字符串的变量loadname,就代表着场景的名称。


记录完下一个场景的名称后,就需要进行场景的过渡,在本游戏中,需要从登录界面过渡到加载界面,具体的方法是通过触摸屏幕,表示登录成功后,从登陆场景切换到Loading场景,然后在通过协同程序等待后台的资源加载完成以后,再自动地过渡到新手引导的场景。

public class OnPress : MonoBehaviour {  


  


    // Use this for initialization  


    public UICamera nguiCamera;  


    void Start () {  


      


    }  


      


    // Update is called once per frame  


    void Update () {  


        if (Input.GetMouseButton(0)) {  


            Ray ray = nguiCamera.camera.ScreenPointToRay(Input.mousePosition);  


            RaycastHit hit;  


            if (Physics.Raycast(ray, out hit)) {  


                Global.GetInstance().loadName = "GameScene";  


                Application.LoadLevel("LoadingScene");  


            }  


        }  


    }  


}  


此处的 Global.GetInstance().loadName="GameScene",用于表示在Loading界面的下一个要加载的界面为名为GameScene的界面。


Application.LoadLevel("LoadingScene")表示切换界面到加载界面。


然后在后台进行新界面的加载。

public class Loading : MonoBehaviour {  


    void Start () {  


        StartCoroutine(loadScene());  


    }  


      


    IEnumerator loadScene()  


    {  


        AsyncOperation async = Application.LoadLevelAsync(Global.GetInstance().loadName);  


        yield return async;  


    }  


}  




要进行场景的切换,还需要再Unity里进行场景的注册。


选File->Build Settings...,上面有个Scenes In Build,你要把你用到的场景都加到这个框里,程序才能正常调用,否则程序写了也无效。


右下角有个Add Current的按钮,这是加载当前场景用的,你也可以直接把所有场景拖到这里。

后面的数字是关卡ID,0是第一个要加载的场景。


然后再对前台的工作进行处理,就可制作出最简单的Loading界面了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值