首页 > 解决方案 > 实现这一点的最佳方法?

问题描述

嗨,我是一名致力于酒吧经理游戏的统一开发人员,我只是想知道实现饮料系统的最佳方式,它设置饮料的价值、桶中的份数、饮料价格的名称整个桶。

这是我之前正在处理的一些代码:

这是接口方法

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 来存储我拥有的所有饮料,或者有更好的方法来做到这一点。

标签: c#unity3d

解决方案


使用 ScriptableObjects,就好像它们是文件一样。

对于每种类型的饮料,都有一个可以从 Unity 轻松填写的 ScriptableObject(甚至您的艺术家也可以这样做),然后在运行时将它们加载到加载这些值的单个 DrinkEntity 类的对象中。

这样你就不会得到几十个或几百个“DrinkSystemBeer”/“DrinkSystemWhiskey”/etc 类,但你仍然可以保持所有代码的清洁和模式友好。

重要提示:切勿直接对 ScriptableObjects 进行操作。只需将它们加载到 DrinkEntity 的构造函数中。将 ScriptableObject 视为您从中读取数据的 xml 或 json 文件。


推荐阅读