質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

745閲覧

UI表示で獲得したアイテムテキストを先入れ後出しの順で数秒後に削除するための処理を実行したい

BRAK

総合スコア98

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/05/09 06:55

編集2020/05/10 02:23

獲得したアイテムを順に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 }

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

できないところを解析しつつ、Stackはむいてないと判断。
改めて、関数内にアイテムを取得した際に配列を作り、実行することでうまく処理をすることができた。

投稿2020/05/10 12:31

BRAK

総合スコア98

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問