• 启动屏幕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));
    }
    }
  • 相关阅读:
    kill新号专题
    LSB 简介
    linux之eval用法(高级bash程序员的必修之技)
    squid日志配置与轮询
    004_ssh连接慢的问题的解决?
    python操作redis-set
    python操作 redis-list
    python操作redis-hash
    python操作redis--string
    python连接redis002
  • 原文地址:https://www.cnblogs.com/ultrasoon/p/2004799.html
Copyright © 2020-2023  润新知