赞
踩
一种和static方法较为类似的东西。
下面两种写法的作用类似:
public class Config
{
public static int a;
public static void F(){};
}
// 调用
Config.a;
Config.F();
public class Config
{
private Config() { }
public static readonly Config instance = new Config();
public int a;
public void F(){};
}
// 调用
Config.instance.a;
Config.instance.F();
单例模式相当于全局性只有一个实例,通过这个实例来调用成员。
场景切换的时候,会销毁当前场景的资源,并加载目标场景的资源。当目标场景资源量较大的时候,加载的进度会非常缓慢。
而此时原场景已经销毁,所以加载的过程会持续黑屏。为了提升用户体验,我们加入Loading界面。
SceneManager.LoadScene("Loading")
加载Loading场景StartCoroutine(StartLoadingScene)
AsyncOperation op = SceneManager.LoadSceneAsync(Config.instance.sceneToLoad);
public float processValue;
GameObject slider;
void Start()
{
slider = transform.Find("Slider").gameObject;
StartCoroutine(StartLoadingScene());
}
void Update()
{
Debug.Log(processValue);
slider.GetComponent<Slider>().value = 1 - processValue;
}
StartLoadingScene
内部时时修改processValue
IEnumerator StartLoadingScene() { float maxSpeed = 0.03f; AsyncOperation op = SceneManager.LoadSceneAsync(Config.instance.sceneToLoad); // 禁止载入后自己切换 op.allowSceneActivation = false; // isDone后再加载最后的10% while (op.progress < 0.9f) { // 连续加载 while (processValue < op.progress) { processValue += maxSpeed; yield return new WaitForEndOfFrame(); } } while (processValue < 1) { processValue += maxSpeed; yield return new WaitForEndOfFrame(); } op.allowSceneActivation = true; }
public class LoadingController : MonoBehaviour { public float processValue; GameObject slider; void Start() { slider = transform.Find("Slider").gameObject; StartCoroutine(StartLoadingScene()); } void Update() { Debug.Log(processValue); slider.GetComponent<Slider>().value = 1 - processValue; } IEnumerator StartLoadingScene() { float maxSpeed = 0.03f; AsyncOperation op = SceneManager.LoadSceneAsync(Config.instance.sceneToLoad); // 禁止载入后自己切换 op.allowSceneActivation = false; // isDone后再加载最后的10% while (op.progress < 0.9f) { // 连续加载 while (processValue < op.progress) { processValue += maxSpeed; yield return new WaitForEndOfFrame(); } } while (processValue < 1) { processValue += maxSpeed; yield return new WaitForEndOfFrame(); } op.allowSceneActivation = true; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。