zoukankan      html  css  js  c++  java
  • 启动屏幕splash screen实现

    using UnityEngine;
    using System.Collections;


    ///////////////////////////////////////
    /// splashScreen script. ///
    /// Version 0.1 by Martijn Dekker ///
    /// martijn.pixelstudio@gmail.com ///
    ///////////////////////////////////////

    public class splashScreen : MonoBehaviour {

    public int levelToLoad = 2; // this has to correspond to a levelIndex (file>build settings)
    public Texture2D splashLogo; // the logo to splash;
    public Color sceneBackgroundColor = new Color(0,0,0); // choose a background color for the screen
    public float fadeSpeed = 0.3f;

    private float alpha = 0f;
    private enum fadeStatus
    {
    fadeIn,
    fadeOut,
    fadeWaiting,
    fadeExit
    }
    private fadeStatus status = fadeStatus.fadeIn;
    private Object[] cams;
    private Camera oldCam;
    private Texture2D backTexture = new Texture2D(1, 1);



    void setAlpha(float alpha)
    {
    sceneBackgroundColor
    = new Color(sceneBackgroundColor.r, sceneBackgroundColor.g, sceneBackgroundColor.b, alpha);
    for (int x = 1; x <= backTexture.width; x++)
    {
    for (int y = 1; y <= backTexture.height; y++)
    {
    backTexture.SetPixel(x, y, sceneBackgroundColor);
    }
    }
    }

    void Start () {
    cams
    = GameObject.FindObjectsOfType(typeof(Camera));
    oldCam
    = Camera.main;
    setAlpha(
    1.0f);
    DontDestroyOnLoad(
    this);
    DontDestroyOnLoad(Camera.main);
    DontDestroyOnLoad(backTexture);
    Destroy(Camera.main.GetComponent(
    typeof (AudioListener)));
    if ((Application.levelCount <= 1) || (Application.levelCount < levelToLoad))
    {
    Debug.Log(
    "I need to have a level to load or the value of level To load is wrong!");
    return;
    }
    }

    void Update () {
    switch(status) {
    case fadeStatus.fadeIn:
    alpha
    += 1.0f * 0.3f * Time.deltaTime;
    break;
    case fadeStatus.fadeOut:
    alpha
    += -1.0f * 0.3f * Time.deltaTime;
    break;
    case fadeStatus.fadeWaiting:
    Application.LoadLevel(levelToLoad);
    status
    = fadeStatus.fadeOut;
    break;
    // case fadeStatus.fadeExit:
    // backAlpha += -1.0f * exitTimer * Time.deltaTime;
    // setAlpha(backAlpha);
    // break;
    }
    }

    void OnGUI()
    {
    if (splashLogo != null)
    {
    GUI.DrawTexture(
    new Rect(0, 0, Screen.width, Screen.height), backTexture, ScaleMode.StretchToFill, false);
    float left = (Screen.width * 0.5f) - (splashLogo.width * 0.5f);
    float top = (Screen.height * 0.5f) - (splashLogo.height * 0.5f);
    GUI.color
    = new Color(GUI.color.r, GUI.color.g, GUI.color.b, Mathf.Clamp01(alpha));
    GUI.DrawTexture(
    new Rect(left, top, splashLogo.width, splashLogo.height), splashLogo);
    GUI.Label(
    new Rect((Screen.width * 0.5f) - 50, top + splashLogo.height, 100, 20), "loading level....");
    backTexture.Apply();
    // You need this or you will not get the color you want in the back ground.
    if (alpha > 1.0f)
    {
    status
    = fadeStatus.fadeWaiting;
    alpha
    = 1.0f;
    }
    if (alpha < 0.0f)
    {
    status
    = fadeStatus.fadeExit;
    oldCam.depth
    = -1000;
    Destroy(
    this);
    }
    }
    }

    void OnDrawGizmos()
    {
    Gizmos.color
    =new Color(1f, 0f, 0f, .5f);
    Gizmos.DrawCube(transform.position,
    new Vector3(1, 1, 1));
    }
    }
  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/ultrasoon/p/2004799.html
Copyright © 2011-2022 走看看