c# - 在 Unity 中存储对象特定信息
问题描述
我正在 Unity 中开发一款 RPG 游戏,我有很多不同的怪物(大约 20 个,但将来会扩展)。目前我在战斗场景中使用控制器,通过 ID 加载敌人的预制件(例如 /monster/1 或 /monster/2),但我想存储更多关于我的怪物的信息。它们将具有统计数据(防御、攻击)、掉落物品 ID、HP 和 CB 等级。存储此信息的最佳方式是什么,以便我在拥有 ID 时可以获取它?
我来自 Javascript 背景,我会使用 JSON 文件来存储这些信息并从那里查找。在 C# 中是否有等效的工作方式?
解决方案
我建议看看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 对象并填写信息!
推荐阅读
- actions-on-google - How can I push a message to a Dialogflow session?
- firebase - 在 Firebase 中获取远程配置之前,我们是否需要等待或刷新用户事件或属性?
- ajax - 保持 Ajax 活动以防止防火墙超时
- laravel - LinkedIn laravel 回调认证
- mysql - 尝试合并表时出现访问错误
- facebook-messenger - Messenger ref parameter is not passed to dialogflow
- botframework - 在 JSON 枚举 FormFlow 对话框中键入另一个答案
- python - Separator in the output after regex filter on a list
- mongodb - How do I flatten the results of an aggregation?
- python - 未找到分布在 python 轮中的共享库