SplashScreen

From Unify Community Wiki

Jump to: navigation, search

[edit] SplashScreen

TODO: Test allot of things. this is a very early version.

     fade the background color out.
     any additions to this script are always welcome!

Just create a new scene with a camera and empty gameobject. Add the script to the gameobject and set properties (nextlevel and logo)

[edit] Code



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));
    }
}

 
Personal tools