如何获取我的库存列表来存储 int、string 和 Sprite? (统一)

问题描述 投票:0回答:1

我在 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 时从哪里开始,以便检查器显示每个单独的元素,并允许我在未来的脚本中轻松引用库存列表以了解物品消耗等信息。

c# unity-game-engine game-development unityscript
1个回答
0
投票

在我看来,你把太多东西混在一起了。

  • 拆分项目实例参数和公共参数。
  • 让您的物品实例包含可编写脚本的对象的链接,其描述对于游戏中该对象的任何实例都相同(它可以包含图标、价格、最大耐用性等,具体取决于您的游戏设计) .
  • 让您的物品实例包含该实例特有的物品参数(例如,当前的耐久度、附魔等)。

金额似乎也像是特定于项目实例的东西,并非每个实例都通用。然而,在你的游戏设计中,对于一堆数量为 50 的硬币的每个实例来说,它可能都是相同的,所以你必须决定存储什么以及存储在哪里。

© www.soinside.com 2019 - 2024. All rights reserved.