/// <summary>
    /// Finds Or Creates The Main Camera On the Scene.
    /// </summary>
    public static void FindOrCreate()
    {
        GameObject tempMainCamera;

        if (Camera.main != null)
        {
            tempMainCamera = Camera.main.gameObject;
            tempMainCamera.GetComponent <Camera>().clearFlags = CameraClearFlags.Depth;
            if (GameController.instance.gameState == GlobalInfo.GameState.MENU)
            {
                tempMainCamera.AddComponent <MainMenuCameraController>();
            }
        }
        else
        {
            tempMainCamera = new GameObject("Main Camera");
            tempMainCamera.AddComponent <Camera>();
            tempMainCamera.AddComponent <GUILayer>();
            tempMainCamera.AddComponent <AudioListener>();
            tempMainCamera.tag = "MainCamera";
        }

        SkyboxCameraController.CreateSkyboxCamera();

        if (GameController.instance.gameState == GlobalInfo.GameState.INGAME)
        {
            GameObject tempLight = new GameObject("Directional Light");
            tempLight.transform.rotation = Quaternion.Euler(45.0f, -135.0f, 0.0f);
            tempLight.AddComponent <Light>();
            Light lightDetails = tempLight.GetComponent <Light>();
            lightDetails.type      = LightType.Directional;
            lightDetails.intensity = 0.50f;

            lightDetails.shadows            = LightShadows.Soft;
            lightDetails.shadowStrength     = 0.75f;
            lightDetails.shadowBias         = 0.05f;
            lightDetails.shadowSoftness     = 5.0f;
            lightDetails.shadowSoftnessFade = 2.0f;

            tempMainCamera.GetComponent <Camera>().clearFlags = CameraClearFlags.Depth;
            tempMainCamera.AddComponent <MainCameraController>();
        }
    }
 private void Awake()
 {
     instance = this;
 }