| using Cysharp.Threading.Tasks;  | 
| using DG.Tweening;  | 
| using System;  | 
| using System.Collections.Generic;  | 
| using System.Linq;  | 
| using UnityEngine;  | 
| using UnityEngine.UI;  | 
|   | 
| public class ItemsOnFloor : MonoBehaviour  | 
| {  | 
|     [SerializeField] RectTransform floorUI;     //掉落道具显示的父类  | 
|     [SerializeField] FloorItemCell floorItemCell;    //非装备显示组件  | 
|     [SerializeField] MoneyMoveByPath moneyMoveByPathCell;     //掉落物金钱  | 
|   | 
|     FloorItemCell[] floorItemCells = new FloorItemCell[20];    //包含非装备的战利品掉落  | 
|     MoneyMoveByPath[] moneyMoveByPathArr = new MoneyMoveByPath[20];  //掉落货币,金钱,经验等  | 
|   | 
|   | 
|     void Awake()  | 
|     {  | 
|         for (int i = 0; i < floorItemCells.Length; i++)  | 
|         {  | 
|             //将预制体实例化到界面中  | 
|             var inst = Instantiate(floorItemCell, floorUI);  | 
|             inst.gameObject.name = "floorItemCell" + i;  | 
|             inst.transform.localPosition = Vector3.zero;  | 
|             floorItemCells[i] = inst;  | 
|         }  | 
|         for (int i = 0; i < moneyMoveByPathArr.Length; i++)  | 
|         {  | 
|             var mmbpath = Instantiate(moneyMoveByPathCell, floorUI);  | 
|             mmbpath.gameObject.name = "moneyMoveByPath" + i;  | 
|             mmbpath.transform.localPosition = Vector3.zero;  | 
|             moneyMoveByPathArr[i] = mmbpath;  | 
|         }  | 
|     }  | 
|   | 
|   | 
|     //主界面切换模式触发  | 
|     private void OnEnable()  | 
|     {  | 
|         //主界面打开和显隐都要刷新  | 
|         Display();  | 
|         EquipModel.Instance.OnItemDropEvent += NotifyPlayItemDrop;  | 
|         PackManager.Instance.DeleteItemEvent += DeleteDropItem;  | 
|     }  | 
|   | 
|   | 
|     private void OnDisable()  | 
|     {  | 
|         EquipModel.Instance.OnItemDropEvent -= NotifyPlayItemDrop;  | 
|         PackManager.Instance.DeleteItemEvent -= DeleteDropItem;  | 
|   | 
|     }  | 
|   | 
|   | 
|     void NotifyPlayItemDrop(List<int> itemIndexs, RectTransform rect)  | 
|     {  | 
|         Display(true, itemIndexs, rect);  | 
|     }  | 
|   | 
|   | 
|     void DeleteDropItem(PackType packType, string guid, int itemID, int index, int clearType)  | 
|     {  | 
|         if (packType != PackType.DropItem)  | 
|             return;  | 
|   | 
|         floorItemCells[index].SetActive(false);  | 
|         if (clearType == 1 || index >= moneyMoveByPathArr.Length)  | 
|         {  | 
|             return;  | 
|         }  | 
|   | 
|         if (!EquipModel.Instance.IsEquip(itemID))  | 
|         {  | 
|             return;  | 
|         }  | 
|   | 
|         moneyMoveByPathArr[index].transform.localPosition = floorItemCells[index].transform.localPosition;  | 
|         moneyMoveByPathArr[index].SetActive(true);  | 
|         moneyMoveByPathArr[index].PlayAnimation(42, 6);  | 
|     }  | 
|   | 
|     /// <summary>  | 
|     /// 掉落过程的表现 界面格子组件顺序和背包格子顺序一致  | 
|     /// </summary>  | 
|     /// <param name="isAnimate"></param>  | 
|     /// <param name="showCount"></param>  | 
|     public void Display(bool isAnimate = false, List<int> indexList = null, RectTransform rect = null)  | 
|     {  | 
|         for (int i = 0; i < floorItemCells.Length; i++)  | 
|         {  | 
|             var item = floorItemCells[i];  | 
|             var equipModel = PackManager.Instance.GetItemByIndex(PackType.DropItem, i);  | 
|             if (equipModel == null)  | 
|             {  | 
|                 //对空物品进行隐藏防范  | 
|                 item.SetActive(false);  | 
|                 continue;  | 
|             }  | 
|             if (indexList != null && !indexList.Contains(i))  | 
|             {  | 
|                 //不干涉其他掉落物品  | 
|                 continue;  | 
|             }  | 
|   | 
|             item.SetActive(true);  | 
|             item.Display(i, isAnimate, rect);  | 
|         }  | 
|     }  | 
|   | 
|   | 
|   | 
|       | 
| }  | 
|   | 
|   | 
|   |