SplashScreen

From Unify Community Wiki
Revision as of 21:59, 3 March 2010 by GrahamRanson (Talk | contribs)

Jump to: navigation, search

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)

Code

<csharp>

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 / 2) - (splashLogo.width / 2);
           float top = (Screen.height / 2) - (splashLogo.height / 2);
           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 / 2) - 50, top + splashLogo.height, 100, 20), "loading level....");
           
           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));
   }

}

</csharp>

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox