public IEnumerator GetScoreRanking() { // ランキング取得リクエスト yield return(PlayDataWebRequest.ScoreRankingRequest(cGameManager.Instance.UserData.Data)); // ランキングUIオブジェクトの初期化 _RankingFrame.transform.DetachChildren(); RankingItemList.Clear(); // ランキングデータをUIアイテムとして追加していく。 if (cGameManager.Instance._RankingData.Data.Count != 0) { ScoreRankingResponseData _RankingData = cGameManager.Instance._RankingData; // データフレームのサイズ設定 Vector2 frameSize = _RankingPanel.sizeDelta; // 初期サイズ float ItemHeight = _ScoreRankingItemPrefab.GetComponent <RectTransform> ().sizeDelta.y; // データUIの高さ int addDataLen = (_RankingData.Data.Count + 1) - (int)(frameSize.y / ItemHeight); if (addDataLen > 0) { frameSize.y += addDataLen * ItemHeight; } _RankingFrame.sizeDelta = frameSize; Vector3 newpos = _RankingFrame.localPosition; newpos -= new Vector3(0, (addDataLen * ItemHeight) / 2, 0); _RankingFrame.localPosition = newpos; Vector3 firstItempos = new Vector3(0, _RankingFrame.sizeDelta.y / 2 - ItemHeight / 2, 0); // ユーザーランク生成 RankingData userRank = cGameManager.Instance._RankingData.UserRank; userRank.name = cGameManager.Instance.UserData.Data.name; ScoreRankingUIItem userRankItem = Instantiate(_ScoreRankingItemPrefab); userRankItem.name = "RankItemUser"; userRankItem.transform.SetParent(_RankingFrame.transform, false); userRankItem.transform.localPosition = firstItempos; userRankItem.SetRanking(userRank); userRankItem.SetColor(Color.blue); RankingItemList.Add(userRankItem); // ランキングリスト生成 List <RankingData> rankingData = cGameManager.Instance._RankingData.Data; for (int i = 0; i < rankingData.Count; i++) { ScoreRankingUIItem item = Instantiate(_ScoreRankingItemPrefab); item.name = "RankItem" + i; item.transform.SetParent(_RankingFrame.transform, false); item.transform.localPosition = firstItempos - new Vector3(0, item.GetComponent <RectTransform> ().sizeDelta.y *(i + 1), 0); item.SetRanking(rankingData [i]); RankingItemList.Add(item); } } }
/// <summary> /// スコアランキングの取得リクエスト /// </summary> /// <returns>The ranking request.</returns> public static IEnumerator ScoreRankingRequest(UserAccountData.UserData userdata) { // リクエストURLを生成 string url_base = Const.WebRequest.BASE_URL + "ScoreRanking/"; string url_param = "?id=" + userdata.id; UnityWebRequest request = UnityWebRequest.Get(url_base); //+url_param); if (WebRequestHeader.HeaderEmpty()) { request.SetRequestHeader(Const.WebRequest.HEADER_NAME_COOKIE, WebRequestHeader.header); } // リクエスト送信 yield return(request.Send()); // 通信エラーチェック if (request.isError) { Debug.Log(request.error); GenericUIManager.Instance.ShowMessageDialog("Error", request.error); } else { if (request.responseCode == 200) { WebRequestHeader.CookieHeaderSetting(request); string text = request.downloadHandler.text; // レスポンスデータの変換 ScoreRankingResponseData res = JsonUtility.FromJson <ScoreRankingResponseData> (text); if (res.Data.Count != 0) { cGameManager.Instance._RankingData = res; } } } }