首页 > 解决方案 > 在 Unity 中存储对象特定信息

问题描述

我正在 Unity 中开发一款 RPG 游戏,我有很多不同的怪物(大约 20 个,但将来会扩展)。目前我在战斗场景中使用控制器,通过 ID 加载敌人的预制件(例如 /monster/1 或 /monster/2),但我想存储更多关于我的怪物的信息。它们将具有统计数据(防御、攻击)、掉落物品 ID、HP 和 CB 等级。存储此信息的最佳方式是什么,以便我在拥有 ID 时可以获取它?

我来自 Javascript 背景,我会使用 JSON 文件来存储这些信息并从那里查找。在 C# 中是否有等效的工作方式?

标签: c#unity3d

解决方案


我建议看看ScriptableObjects。我已经使用 Unity 工作了几年,并发现它是解决方案(对我而言)。

这是一个例子:

使用 UnityEngine;

[CreateAssetMenu(menuName = "Units/Monster")]
public class Monster : ScriptableObject
{
    public int Id;
    public string Name;    

    [TextArea(2, 5)]
    [SerializeField]
    protected string BaseDescription;

    public Sprite UiButtonSprite;
    public float Attack;

    public float Health;

    public int Armor;
    // etc.
 }

然后,您可以转到 Unity 中的 Assets 窗口,创建一个新的 Monster 对象并填写信息!


推荐阅读