zoukankan      html  css  js  c++  java
  • Unity:场景管理

    场景类头文件 using UnityEngine.SceneManagement;

    AsyncOperation operation;  //异步加载类对象

    //1.创建场景,运行结束会销毁
    Scene scene = SceneManager.CreateScene("001");


    //2.加载场景 LoadSceneMode是加载模式,默认Single模式
    SceneManager.LoadScene("002",LoadSceneMode.Additive);


    //3.拿到场景
    Scene scene2 = SceneManager.GetActiveScene(); //拿到当前活跃的场景(挂载该脚本的场景)
    Scene scene3 = SceneManager.GetSceneByName("002");
    Scene scene4 = SceneManager.GetSceneByName("003"); // × 返回null,没有加载的场景是拿不到的
    }

    //4.卸载场景
    SceneManager.UnloadSceneAsync("002");

    5.异步加载场景

     1 private AsyncOperation operation;  //场景加载类对象
     2 
     3 void Start () {
     4     StartCoroutine(LoadScene());
     5 }
     6     
     7 IEnumerator LoadScene()
     8 {
     9     //异步加载场景
    10     operation = SceneManager.LoadSceneAsync(0);
    11     yield return operation;
    12 }
    LoadSceneAsync

    6.场景淡入淡出

    创建一张Image图片,填充屏幕,脚本挂载Canvas上

     1 using System.Collections;
     2 using System.Collections.Generic;
     3 using UnityEngine;
     4 using UnityEngine.UI;
     5 using UnityEngine.SceneManagement;
     6 
     7 public class LoadScene : MonoBehaviour
     8 {
     9     public float fadeSpeed;
    10     public Image image;
    11     float colorAlpha;
    12     bool isQuit;
    13     void Start()
    14     {
    15         image.color = Color.clear;
    16         DontDestroyOnLoad(gameObject);  //脚本所挂载物体过场不销毁
    17     }
    18     private void Update()
    19     {
    20         if (!isQuit)
    21             QuitScene();
    22         else
    23             EnterScene();
    24     }
    25     void QuitScene()
    26     {
    27         colorAlpha = Mathf.Lerp(colorAlpha, 1, Time.deltaTime * fadeSpeed); //渐黑
    28         if (colorAlpha > 0.95f)
    29             colorAlpha = 1;
    30         image.color = new Color(image.color.r, image.color.g, image.color.b, colorAlpha);
    31         if (colorAlpha == 1)
    32         {
    33             isQuit = true;
    34             SceneManager.LoadScene(0);
    35         }
    36     }
    37     void EnterScene()
    38     {
    39         colorAlpha = Mathf.Lerp(colorAlpha, 0, Time.deltaTime * fadeSpeed); //渐白
    40         if (colorAlpha < 0.05f)
    41             colorAlpha = 0;
    42         image.color = new Color(image.color.r, image.color.g, image.color.b, colorAlpha);
    43         if (colorAlpha==0)
    44             Destroy(gameObject);
    45     }
    46 }
    用Image实现场景淡出淡入
  • 相关阅读:
    C#中的WebBrowser控件的使用
    xshell5 可用注册码
    一次多数据源 配置问题记录
    org.springframework.data.mongodb.core.MongoTemplate]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.core.convert.support.ConversionServiceFactory.cr
    关于 <mvc:argument-resolvers> 的一次使用记录
    补码、反码、原码 ~ ^ 运算
    mysql中int、bigint、smallint 和 tinyint的区别与长度的含义【转】
    tomcat优化记录
    判读40亿数字中是否有某个数字
    LinkedList源码疑问记录
  • 原文地址:https://www.cnblogs.com/tomatokely/p/15356172.html
Copyright © 2011-2022 走看看