我在 Unity 中有一个脚本,用于我正在制作的一个小型原型。它是一个库存脚本,旨在添加玩家在游戏中拾取的库存物品。它是如何工作的(或者我打算如何工作),库存脚本有一个名为 ItemData 的可编写脚本的对象类,我在其中存储字符串(项目名称)、int(所述项目的数量)和 Sprite(项目图标) 。以下代码存储在播放器控制器上
这是我拥有的以下代码,到目前为止,它给了我一个参数异常错误
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu]
public class ItemData : ScriptableObject
{
public string itemName;
public int amountOfItem;
public Sprite itemIcon;
}
public class Inventory : MonoBehaviour
{
public List<ItemData> items = new List<ItemData>();
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Item"))
{
ItemData itemData = other.GetComponent<ItemData>();
if (itemData != null)
{
items.Add(itemData);
Destroy(other.gameObject);
}
}
}
}
我有一个存储 ItemData 的列表,当玩家与标记为“Item”的游戏对象发生碰撞时,它会将更多 ItemData 添加到列表中。我知道该列表可能只是存储 ItemData 可编写脚本的对象,但我不知道在解耦(?) int、string 和 Sprite 时从哪里开始,以便检查器显示每个单独的元素,并允许我在未来的脚本中轻松引用库存列表以了解物品消耗等信息。
在我看来,你把太多东西混在一起了。
金额似乎也像是特定于项目实例的东西,并非每个实例都通用。然而,在你的游戏设计中,对于一堆数量为 50 的硬币的每个实例来说,它可能都是相同的,所以你必须决定存储什么以及存储在哪里。