如何实现具有不同行为的两个相同对象?

问题描述 投票:1回答:1

我正在编写C#单人游戏。我添加了两个高明胺,以便玩家可以收集金币。我希望每个地雷都有限制。您收集的金币不能超过50。我实现了一个对象工厂来获取地雷:

case ObjectFactory.ObjectType.GoldVein:
    mActiveButtons.Add(ObjectFactory.ObjectType.GoldVein.ToString());
    if (GoldStock >= 0)
    {
        mButtons[ObjectFactory.ObjectType.GoldVein.ToString()].SetLocation(two);
        mButtons[ObjectFactory.ObjectType.GoldVein.ToString()].mAction = GoldVein.CollectGold;
        buttons[ObjectFactory.ObjectType.GoldVein.ToString()].UpdateText("Collect");
    }
    break;

[GoldStock是我的golmine限制。当没有更多的GoldStock时,玩家将无法再收集黄金。

这是我的CollectGold方法:

public static void CollectGold(ObjectFactory.ObjectType type)
{
    Hud.mGold += 10;
    Hud.GoldStock -= 2;
}

mGold是玩家的黄金供应。我想要的是,每一个高尔基都有自己的GoldStock。玩家应该在每个地雷中获得50金币。现在,地雷正在共同努力。这两个矿共有50金。我该如何分开呢?有什么想法吗?

c# object monogame
1个回答
0
投票

您必须保留单独的金矿实例,并且不要通过static变量共享金矿。

一个简单的(控制台)示例为:

class Program
{
    static void Main(string[] args)
    {
        var goldMine1 = new GoldMine() { Gold = 50 };

        var goldMine2 = new GoldMine() { Gold = 50 };
    }
}

class GoldMine
{
    public int Gold { get; set; }
}

每个这些矿山都有自己的金币,您可以分别从中取出。

© www.soinside.com 2019 - 2024. All rights reserved.