private void OnEnable()
        {
            cameras.AddRange(GameObject.FindObjectsOfType <Camera>());
            if (cameras.Count > 1)
            {
                cameraTransition = GameObject.FindObjectOfType <CameraTransition>();
                if (cameraTransition != null)
                {
                    cameraTransition.Time = transitionTime;

                    // Randomly select a camera.
                    cameras.Sort(delegate(Camera a, Camera b) { return(string.Compare(a.gameObject.name, b.gameObject.name)); });

                    cameraIdx = random.Next(0, cameras.Count - 1);

                    for (int i = 0; i < (cameras.Count - 0); ++i)
                    {
                        cameras[i].gameObject.SetActive(i == cameraIdx);
                    }

                    // Test all effects.
                    Array untestedTransitions = Enum.GetValues(typeof(CameraTransitionEffects));
                    for (int i = 0; i < untestedTransitions.Length; ++i)
                    {
                        CameraTransitionEffects testedEffect = (CameraTransitionEffects)untestedTransitions.GetValue(i);

                        if (cameraTransition.CheckTransition(testedEffect) == true
#if UNITY_WEBGL
                            // Not supported in WebGL yet.
                            && testedEffect != CameraTransitionEffects.LinearBlur && testedEffect != CameraTransitionEffects.CrossZoom
#endif
                            )
                        {
                            transitionEnum.Add(testedEffect);
                        }
                        else
                        {
                            Debug.LogWarningFormat("Transition '{0}' is not supported.", testedEffect.ToString());
                        }
                    }

                    for (int i = 0; i < transitionEnum.Count; ++i)
                    {
                        transitionToggles.Add(false);
                    }
                }
                else
                {
                    Debug.LogWarning(@"CameraTransition not found.");
                }
            }
            else
            {
                Debug.LogWarning(@"Few cameras found (at least two).");
            }

            this.enabled = (cameras.Count > 1 && cameraTransition != null);

#if ENABLE_DEMO
            guiShow               = false;
            changeCameraTime      = 0.5f;
            randomTransition      = false;
            cameraTransition.Time = 2.0f;
#endif
        }