/// <summary> /// 表示 /// </summary> /// <param name="gameController">ゲーム全体の制御システム</param> public void Draw(GameController gameController) { gc = gameController; gameObject.SetActive(true); // ページを生成 if (currentPanel != null) { Destroy(currentPanel.gameObject); } currentPanel = Instantiate(_GallaryPanelPrefab, transform); currentPanel.Create(this, gameController.NovelInfoList, gameController.Histories, PageIndex); InvalidateButtons(PageIndex); }
/// <summary> /// ページをスライドさせるアニメーション /// </summary> /// <param name="direction"> /// 方向 1か-1を指定する /// 1なら1ページ進み、-1なら1ページ戻る /// </param> private IEnumerator CoSlidePage(int direction) { // 新しいページのパネルを生成する GallaryPanelCreater newPanel = Instantiate(_GallaryPanelPrefab, transform); newPanel.transform.localPosition = new Vector3(panelWidth * direction, panelY); newPanel.Create(this, gc.NovelInfoList, gc.Histories, PageIndex); // 古いパネルと新しいパネルの両方を指定された方向に動かす float elaspedTime = 0f; while (elaspedTime < _SlideTime) { elaspedTime += Time.deltaTime; Vector3 pos = currentPanel.transform.localPosition; pos.x = Mathf.Lerp(0f, -panelWidth * direction, elaspedTime / _SlideTime); Vector3 dx = new Vector3(panelWidth * direction, 0f); currentPanel.transform.localPosition = pos; newPanel.transform.localPosition = pos + dx; yield return(null); } // 新しいパネルをきっちり所定の位置に { Vector3 pos = newPanel.transform.localPosition; pos.x = 0f; newPanel.transform.localPosition = pos; } // 古いパネルを消して新しいパネルを参照するようにする Destroy(currentPanel.gameObject); currentPanel = newPanel; }