using System.Collections; using System.Collections.Generic; using UnityEngine; using TowerDefense.Level; using UnityEngine.UI; using Protobuf; using DG.Tweening; /** * 无尽模式结算界面列表脚本 * @Author: chenxin * @Date: 2020-10-22 11:06:15 */ namespace KTGMGemClient { public class EndlessSettlementPropList : MonoBehaviour { public GameObject ItemPrefab; public GameObject Grid; private string iconPath = "UI/Props/"; private string bgPath = "UI/Props/Di/"; private float slowTime = 0.1f;//物品挨个出现频率 //private float parentHeight;//父物体高度 GridLayoutGroup myGroup; RectTransform myRect, gridRect; /// /// Awake is called when the script instance is being loaded. /// void Awake() { //parentHeight = transform.parent.GetComponent().sizeDelta.y; myGroup = Grid.GetComponent(); gridRect = Grid.GetComponent(); myRect = GetComponent(); } /// /// 刷新道具列表 /// public void RefreshList() { Invoke("StartLater", 0.1f); // if (Application.platform == RuntimePlatform.WindowsEditor) // { // Debug.Log(gameObject.activeSelf); // //UnityEditor.EditorApplication.isPaused = true; // } return; // List list = EndlessDropManager.instance.GetAllObtainedDrop(); // for (int i = 0; i < list.Count; ++i) // { // if (list[i].Reward.type == CURRENCY.Gold) // { // AddItem($"{(int)list[i].Reward.type}"); // } // else // { // for (int j = 0; j < list[i].Reward.count; ++j) // { // AddItem($"{(int)list[i].Reward.type}_{list[i].Reward.id}"); // } // } // } } private void StartLater() { StartCoroutine(ShowSlow()); } IEnumerator ShowSlow() { List list = EndlessDropManager.instance.GetAllObtainedDrop(); for (int i = 0; i < list.Count; ++i) { if (list[i].Reward.type == CURRENCY.Gold) { AddItem($"{(int)list[i].Reward.type}"); yield return new WaitForSeconds(slowTime); } else { for (int j = 0; j < list[i].Reward.count; ++j) { AddItem($"{(int)list[i].Reward.type}_{list[i].Reward.id}"); yield return new WaitForSeconds(slowTime); } } } } private void AddItem(string resId) { GameObject item = Instantiate(ItemPrefab); EndlessPropIcon propIcon = item.GetComponent(); Sprite iconSp = Resources.Load($"{iconPath}{resId}"); Sprite bgSp = Resources.Load($"{bgPath}{resId}"); propIcon.SetIcon(iconSp); propIcon.SetBg(bgSp); item.transform.SetParent(Grid.transform, false); if (gridRect.sizeDelta.y > myRect.sizeDelta.y && Grid.transform.childCount % myGroup.constraintCount == 1) { gridRect.DOAnchorPosY(gridRect.sizeDelta.y - myRect.sizeDelta.y + (item.transform as RectTransform).sizeDelta.y, 0.2f); } } } }