NCMBを使用してランキング実装を行なっております。
その際にサーバー上からデータを取得し、自分のランキング(順位と勝利数)をサーバーから取得して表示をさせたいのですが、表示がされません。
何かコード自体に問題があるのか、サーバー上のユーザーデータが1000件以上あるので取得に時間を要して表示がされない(コンソール内でrank1の確認をした際に101までしか表示がされませんでした。)と推測しておりますが、
この度初めてのNCMBの実装なのでアドバイスをいただけますと幸いです。
C#
1 2public class OnlineRankManager : MonoBehaviour 3{ 4 5private int rank1; 6public GameObject win; 7private NCMBData ncmbData; 8private NCMBObject _userClass; 9private NCMBQuery<NCMBObject> _query; 10 11void Start() 12{ 13 14ncmbData = GameObject.Find("NCMBSettings").gameObject.GetComponent<NCMBData>(); 15userId = PlayerPrefs.GetInt("USERID", -1); 16 17 rank1 = 1; 18 _query = new NCMBQuery<NCMBObject>("UserClass"); 19 _query.OrderByDescending("win"); 20 _query.FindAsync((List<NCMBObject> objectList, NCMBException ex) => { 21 foreach (NCMBObject ncbObject in objectList) 22 { 23 24 if (Convert.ToInt32(ncbObject["id"]) != userId) 25 { 26 rank1++; 27 continue; 28 29 } 30 else 31 { 32 33 GameObject userData = win.transform.Find("UserData1").gameObject.transform.Find("Data").gameObject; 34 35 36 37 userData.transform.Find("Ranking").gameObject.transform.GetComponent<Text>().text = rank1 + "位"; 38 userData.transform.Find("Name").gameObject.transform.GetComponent<Text>().text = ncbObject["username"].ToString(); 39 userData.transform.Find("Wins").gameObject.transform.GetComponent<Text>().text = Convert.ToInt32(ncbObject["win"]).ToString(); 40 userData.transform.Find("Icons").gameObject.transform.GetComponent<Image>().sprite = icons[Convert.ToInt32(ncbObject["icon"])]; 41 42 43 44 } 45 } 46 47 48 }); 49 } 50}
あなたの回答
tips
プレビュー