Esempio n. 1
0
        private IEnumerator AppendCore(IObserver <SceneInstance> observer, Scenes?identifier, bool activeOnLoad)
        {
            if (!identifier.HasValue)
            {
                yield break;
            }

            SceneInstance sceneInstance = null;

            var diagnostics = new TimeDiagnostics();

            diagnostics.Begin(TimeDiagnostics.Measure.Append);

            var loadYield = LoadScene(identifier.Value, LoadSceneMode.Additive).ToYieldInstruction(false);

            while (!loadYield.IsDone)
            {
                yield return(null);
            }

            if (loadYield.HasError)
            {
                OnLoadError(loadYield.Error, identifier);
            }

            if (loadYield.HasResult)
            {
                sceneInstance = loadYield.Result;

                appendSceneInstances.Add(sceneInstance);

                diagnostics.Finish(TimeDiagnostics.Measure.Append);

                var additiveTime = diagnostics.GetTime(TimeDiagnostics.Measure.Append);

                var message = string.Format("{0} ({1:F2}ms)(Additive)", identifier.Value, additiveTime);

                UnityConsole.Event(ConsoleEventName, ConsoleEventColor, message);

                if (activeOnLoad)
                {
                    sceneInstance.Enable();
                }
            }

            observer.OnNext(sceneInstance);
            observer.OnCompleted();
        }
Esempio n. 2
0
        private IEnumerator AppendCore(IObserver <SceneInstance> observer, Scenes?identifier, bool activeOnLoad)
        {
            if (!identifier.HasValue)
            {
                yield break;
            }

            SceneInstance sceneInstance = null;

            var diagnostics = new TimeDiagnostics();

            diagnostics.Begin(TimeDiagnostics.Measure.Append);

            var loadYield = LoadScene(identifier.Value, LoadSceneMode.Additive).ToYieldInstruction();

            yield return(loadYield);

            if (loadYield.HasResult)
            {
                sceneInstance = loadYield.Result;

                diagnostics.Finish(TimeDiagnostics.Measure.Append);

                var additiveTime = diagnostics.GetTime(TimeDiagnostics.Measure.Append);

                UnityConsole.Event(ConsoleEventName, ConsoleEventColor, "{0} ({1}ms)(Additive)", identifier.Value, additiveTime);
            }

            if (activeOnLoad)
            {
                sceneInstance.Enable();
            }

            observer.OnNext(sceneInstance);
            observer.OnCompleted();
        }