通知
すべてクリア
29/04/2023 10:00 pm
▼やりたいこと
サンプルアセットを改造し、
右のスクロール内からアイテムをクリックした際、
添付画像のように、選択したアイテムに応じてアイコンや説明が表示されるようにしたい
サンプルアセットを改造し、
右のスクロール内からアイテムをクリックした際、
添付画像のように、選択したアイテムに応じてアイコンや説明が表示されるようにしたい
▼試したこと
現在のサンプルアセットではアイテム情報を持っていないと思われるため、
まずはアイテム情報を登録できるシステムと、それを管理するアイテムデータベースを作成し、
そこから情報を引っ張り出すことで上記やりたいことを実現できるのではと考え、その方針で実装を進めています。アイテムデータベースと、アイテム情報の作成まではできたのですが、
そのあとどのように進めればいいのかが分からず詰まっています。作成したスクリプトはそれぞれ以下になります。アイテム情報のスクリプト
現在のサンプルアセットではアイテム情報を持っていないと思われるため、
まずはアイテム情報を登録できるシステムと、それを管理するアイテムデータベースを作成し、
そこから情報を引っ張り出すことで上記やりたいことを実現できるのではと考え、その方針で実装を進めています。アイテムデータベースと、アイテム情報の作成まではできたのですが、
そのあとどのように進めればいいのかが分からず詰まっています。作成したスクリプトはそれぞれ以下になります。アイテム情報のスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; [Serializable] [CreateAssetMenu(fileName = "Item", menuName = "CreateItem")] public class Item : ScriptableObject { public enum KindOfItem { Weapon, UseItem } // アイテム種類 private KindOfItem kindOfItem; // アイテムアイコン private Sprite icon; // アイテム名 private string itemName; // アイテムの情報 private string information; public KindOfItem GetKindOfItem() { return kindOfItem; } public Sprite GetIcon() { return icon; } public string GetItemName() { return itemName; } public string GetInformation() { return information; } }
アイテムデータベースのスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "ItemDataBase", menuName = "CreateItemDataBase")] public class ItemDataBase : ScriptableObject { [SerializeField] private List<Item> itemLists = new List<Item>(); public List<Item> GetItemLists() { return itemLists; } }
29/04/2023 10:01 pm
ボタンの情報をやりとりするスクリプトはItemListManagerとItemContentsです。ItemListManagerによりサンプルデータでクリックしたボタンの変数"itemId"がウィンドウ内に表示されています。
この動作はItemListManageの51行目で行われています。
もしアイテムの種類,アイコン等が連動しているなら「itemId 1 の時はitemId 1 用のアイコンと説明を表示」するスクリプトを以下添付画像の場所に書き込むことでウィンドウ内に説明を表示させることができます。
29/04/2023 10:01 pm
そして今の状態だとAddボタンを押すと10個のIDからランダムなIDのボタンが生成されますが、プレイ中にアイテムの登録されている種類の数が変動するのであれば、OnClickAddItemButton()も書き換える必要があります。
基本この2つの箇所を変更すれば「画像やテキストを変更する」動作を作ることができます。
29/04/2023 10:02 pm
ご教示いただきありがとうございます。
指摘いただいた箇所に自力でif文章を入力してみたのですが、
エラーが出てしまいました。やりたいこととしては、idが1のときは「apple」と表示したいものになります。
恐らく記述内容の誤りが原因かと思うのですが...
current_ManagedIdをitemIdに変更しても同様のエらーになります。
29/04/2023 10:02 pm
どちらの変数も、名前の先頭に "_" (アンダーバー)が付いていないので、そのせいかと思います。