我正在Unity中开发一个RPG游戏,我有很多不同的怪物(大约有20个,但将来会扩展)。当前,我在战斗场景中使用控制器,通过ID(例如/ monster / 1或/ monster / 2)加载敌方预制件,但我想存储有关怪物的更多信息。他们将具有统计信息(防御,攻击),掉落物品ID,HP和CB等级。最好的存储此信息的方法是什么,以便我在拥有ID时可以获取它?
我来自Javascript背景,我将在其中使用JSON文件存储此信息并从那里查找。是否有等效的C#工作方式?
答案 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”。
有关示例,请参见tutorial和documentation。