public void ChangeCoreUi <T>(Action <T> onLoaded = null, OverlayUiOperator?overlayUiOperator = null) where T : ICoreUiCanvas { if (!CheckInited() || !CheckChanging()) { return; } this.overlayUiOperator = overlayUiOperator; isChanging = true; isExited = false; isPrepared = false; sceneLoader.Load <T>(onLoaded); previousCoreUiCanvas = currentCoreUiCanvas; currentCoreUiCanvas = null; if (overlayUiOperator.HasValue) { overlayUiOperator.Value.AddShownAction(exitPreviousUiAction); } else { ExitPreviousUi(); } }
void ExitPreviousUi() { isExited = (previousCoreUiCanvas == null); if (overlayUiOperator.HasValue) { // 画面はOverlayUiで隠れているので即時退場 // Because the current ui is hidden by an overlay ui previousCoreUiCanvas?.ExitImmediately(onExited); } else { previousCoreUiCanvas?.Exit(onExited); } previousCoreUiCanvas = null; }
void ICoreUiBank.NotifyPrepared <T>(T coreUiCanvas) { if (!CheckInited()) { return; } currentCoreUiCanvas = coreUiCanvas; CanvasInStratum canvasInStratum = new CanvasInStratum( ConstStratum.Core, // 呼び出し順に登録するのですべて同じOrderInStratumで登録する 0, coreUiCanvas.CanvasOrderUpdater); canvasBank.AddCanvas(canvasInStratum); isPrepared = true; TryEntry(); }