像统一一样实例化一个对象

时间:2015-03-22 19:56:36

标签: c# xna monogame

我有一个看起来像这样的二维数组

{0,0,0,0},
{1,1,1,1},
{2,2,2,2},
{2,2,2,2},

然后在我的绘制方法中,我循环遍历数组

if(index == 0)
{
    "I got a Wheat class an now I would like to call the wheat.draw,wheat.update etc."
}

但是,如果我做了像

这样的事情
var wheat = new Wheat();
wheat.LoadContent(), wheat.draw ect

它会在每次发现0时创建一个新的小麦对象,然后它会调用构造函数来重置我的变量,这样小麦就不会生长。我该如何以正确的方式做到这一点

(我还有Grass和Dirt瓦片的课程)。

1 个答案:

答案 0 :(得分:0)

每次使用

创建一个新对象
var wheat = new Wheat()

为什么不尝试将它分类到你班级的私人领域呢

private Wheat _wheat;

在你的创作方法中分配

_wheat = new Wheat()

这样您就不会每次都创建它。在创建Object之前,您始终可以检查_wheat是否为null。

如果您要维护多个小麦实例。尝试将其存储在适合您逻辑的集合/词典中。在您提供更多信息之前,很难建议逻辑。

修改

同样,如果不仔细研究现有的设计/要求,很难说。在我的头脑中,我有很多未解答的问题 - 你可以保留的一件事是每种类型物体的集合 -

ObservableCollection<wheat>,<grass> etc...

但是在你有办法区分一个物体与其他物体之前,这不会解决问题。您应该能够在需要时根据某些ID获取它们。这只是你必须自己解决的建议。