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));
    }
    }
  • 相关阅读:
    图片懒加载原理-实例二
    节流函数(throttle)的原理
    防抖动函数(debounce)的原理
    立即执行函数(immediate)的原理
    图片懒加载原理-实例三
    图片懒加载原理-实例四:首屏加载
    js运算符优先级
    java实现链栈
    java实现栈
    静态链表以及几种表的比较
  • 原文地址:https://www.cnblogs.com/ultrasoon/p/2004799.html
Copyright © 2011-2022 走看看