c# - 实现这一点的最佳方法?
问题描述
嗨,我是一名致力于酒吧经理游戏的统一开发人员,我只是想知道实现饮料系统的最佳方式,它设置饮料的价值、桶中的份数、饮料价格的名称整个桶。
这是我之前正在处理的一些代码:
这是接口方法
public interface IDrinkSystem
{
string SetDrinkName(string nameToSet);
float SetDrinkValue(float drinkValue);
int AmmountOfServingsInBarrel(int Servings);
float PriceOfBarrel(float price);
}
这是这样做的类方法
public class DrinkSystem
{
public void NewDrink(string drinkName, float drinkValue, int barrelServings, float barrelPrice)
{
// Have getters and setters for all values in separate methods
}
}
什么是使它易于扩展的最佳方法,并且我可以制作一系列 NewDrink 来存储我拥有的所有饮料,或者有更好的方法来做到这一点。
解决方案
使用 ScriptableObjects,就好像它们是文件一样。
对于每种类型的饮料,都有一个可以从 Unity 轻松填写的 ScriptableObject(甚至您的艺术家也可以这样做),然后在运行时将它们加载到加载这些值的单个 DrinkEntity 类的对象中。
这样你就不会得到几十个或几百个“DrinkSystemBeer”/“DrinkSystemWhiskey”/etc 类,但你仍然可以保持所有代码的清洁和模式友好。
重要提示:切勿直接对 ScriptableObjects 进行操作。只需将它们加载到 DrinkEntity 的构造函数中。将 ScriptableObject 视为您从中读取数据的 xml 或 json 文件。
推荐阅读
- rust - 两个消费者如何使用actix字段流?
- c - 传递参数形式以将 bash 变量名循环到 c/c++ 回 bash
- javascript - 获取每个用户的最后一条消息 - Mongoose
- r - 合并 2 个表以创建 1 个表:R 中的相同行、不同列
- javascript - 对 JSON 数组进行字符串化
- python - 如何使 .remove() 始终如一地工作?
- javascript - 如何防止子组件 SVG 在父 SVG 中以角度填充颜色?
- r - mouse::md.pattern 中的重叠字段名称
- amazon-web-services - AWS dynamoDB 经度/纬度查询
- spring-boot - 是什么导致 WebClient 从休息调用返回 null?