獲得したアイテムを順にUIに表示して一定以上時間が経ったら先入れ後出しの順で削除したい
アイテムを獲得した際にUIで"〇〇を獲得しました"という表示を出してその際にStack.Pushでアイテムオブジェクト名を格納して、一定以上の時間が経ったらStack.Popで取り出した順にUIを削除したいんですが、Popのところで一定時間が経ったUIのboolを検知して削除という流れをうまく組むことができません。
C#
1//一定時間が経つ処理をしたUIの方のプログラム 2 [Header("UI stuff to change")] 3 [SerializeField] private Text itemNameText; 4 [SerializeField] private Text itemNumberHeld; 5 6 [Header("TextScroll")] 7 [SerializeField] private float textScrollSpeed; 8 [SerializeField] private float limitPosition; 9 10 [Header("TextTransparent")] 11 [SerializeField] private float itemName; 12 [SerializeField] private float itemNumber; 13 [SerializeField] private float transparetnSpeed; 14 15 [Header("InActiveBool")] 16 public bool inActive = false; 17 18 private void Update() 19 { 20 if (itemNameText.transform.position.y <= limitPosition && 21 itemNumberHeld.transform.position.y <= limitPosition) 22 { 23 itemNameText.transform.position = new Vector2(itemNameText.transform.position.x, 24 itemNameText.transform.position.y + textScrollSpeed * Time.deltaTime); 25 26 itemNumberHeld.transform.position = new Vector2(itemNumberHeld.transform.position.x, 27 itemNumberHeld.transform.position.y + textScrollSpeed * Time.deltaTime); 28 29 if (itemNameText.transform.position.y >= 450 || 30 itemNumberHeld.transform.position.y >= 450) 31 { 32 if (itemName != 0 && itemNumber != 0) 33 { 34 //Debug.Log("開始"); 35 itemNameText.color = new Color(1, 1, 1, itemName); 36 itemNumberHeld.color = new Color(1, 1, 1, itemNumber); 37 38 itemName -= transparetnSpeed * Time.deltaTime; 39 itemNumber -= transparetnSpeed * Time.deltaTime; 40 } 41 } 42 } 43 44 if (itemNumberHeld.transform.position.y >= limitPosition || 45 itemNumber <= 0) 46 { 47 inActive = true; 48 } 49 }
C#
1//UIの表示とオブジェクト名の格納プログラム 2[Header("GetItem Information")] 3 [SerializeField] private GameObject blankGetItemSlot;//アイテム 4 [SerializeField] private GameObject inventoryPanel;//枠の中にアイテム名を表示 5 public GetItemInventory getItemInventory; 6 Stack<GameObject> stack = new Stack<GameObject>() { }; 7 8 private void OnEnable() 9 { 10 MakeGetItemSlots(); 11 } 12 13 void MakeGetItemSlots() 14 { 15 if (getItemInventory) 16 { 17 for(int i = 0; i < getItemInventory.myGetItemInvenotory.Count; i++) 18 { 19 if(getItemInventory.myGetItemInvenotory[i].numberHeld > 0 || 20 getItemInventory.myGetItemInvenotory[i].itmeName == "Bottle") 21 { 22 GameObject temp = Instantiate(blankGetItemSlot, inventoryPanel.transform.position, Quaternion.identity); 23 temp.transform.SetParent(inventoryPanel.transform); 24 25 GetItemSlot newSlot = temp.GetComponent<GetItemSlot>(); 26 if (newSlot) 27 { 28 newSlot.SetUp(getItemInventory.myGetItemInvenotory[i], this); 29 stack.Push(temp); 30 Debug.Log(getItemInventory.myGetItemInvenotory[i]); 31 32 if (newSlot.inActive) 33 { 34//仮にGetItemSlot newSlotが初めからtrueの場合は即削除される 35//一定時間をおいての処理なのでできない 36 stack.Pop(); 37 Destroy(temp); 38 Debug.Log(getItemInventory.myGetItemInvenotory[i]); 39 } 40 } 41 } 42 } 43 } 44 }
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。