在Unity中存储对象特定的信息

时间:2018-08-28 06:56:02

标签: c# unity3d

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

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

2 个答案:

答案 0 :(得分:2)

我建议看看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中的“资产”窗口,创建一个新的Monster对象并填写信息!

答案 1 :(得分:0)

Unity为此提供了一个内置解决方案:“ ScriptableObject”。

有关示例,请参见tutorialdocumentation