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 } // アイテムの種類 [SerializeField] private KindOfItem kindOfItem; // アイテムのアイコン [SerializeField] private Sprite icon; // アイテムの名前 [SerializeField] private string itemName; // アイテムの情報 [SerializeField] 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; } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemManager : MonoBehaviour { // アイテムデータベース [SerializeField] private ItemDataBase itemDataBase; // アイテム数管理 private Dictionary<Item, int> numOfItem = new Dictionary<Item, int>(); // Use this for initialization void Start () { for (int i = 0; i < itemDataBase.GetItemLists().Count; i++) { // アイテム数を適当に設定 numOfItem.Add (itemDataBase.GetItemLists() [i], i); // 確認の為データ出力 Debug.Log (itemDataBase.GetItemLists()[i].GetItemName() + ": " + itemDataBase.GetItemLists()[i].GetInformation()); } Debug.Log (GetItem ("ナイフ").GetInformation()); Debug.Log (numOfItem [GetItem ("ハーブ")]); } // 名前でアイテムを取得 public Item GetItem(string searchName) { return itemDataBase.GetItemLists().Find(itemName => itemName.GetItemName() == searchName); } }
上の3番目のスクリプト関数"GetItem"に名前を入れて値を取得する場合に
1番目で列挙されているKindOfItemのWeaponが設定されているもの限定で、対象の名前を検索する時はどういった文を追加すればよいのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。