我正在为我的学校作业编写一个小游戏,游戏是一个简单的2D游戏,有怪物,物品和子弹。基本上你跑来跑去并试图收集所有物品硬币,怪物试图阻止你,你可以用你收集的子弹击落它们。非常简单。
问题是,我已经将怪物,物品,墙壁,玩家和子弹添加到名为LiveObjects的静态类中,然后我可以从代码中的任何位置访问这些对象。这是一种不好的做法吗?什么是替代品? (它不是多线程的)
LiveObjects.cs
internal static class LiveObjects
{
public static List<Item> items = new List<Item>(); // List with all the items
public static List<Monster> monsters = new List<Monster>(); // List with all present monsters
public static List<Wall> walls = new List<Wall>(); // List with the walls
public static List<Bullet> bullets = new List<Bullet>(); // List with the bullets
public static Player player = new Player(0, 0); // The player object
}
我使用很多不同的类来操作LiveObjects中的数据,然后为了避免传递整个List,我可以直接在任何方法中调用它。
答案 0 :(得分:4)
优点:
缺点:
答案 1 :(得分:1)
如果您的应用程序是多线程的,您可能需要考虑多线程访问和修改静态实例的问题。这是一个关于线程的好文章:
答案 2 :(得分:1)
静态类的一个优点是它是唯一可以定义扩展方法的地方。
答案 3 :(得分:0)
我并不认为这是一个严肃的答案,但正如你所发现的那样,在专业人士中,这是非常简单的到达你的实体。
其中一个问题是,有些人非常讨厌静态课程,以至于他们不会雇用你,因为你已经习惯了。 http://thegrenade.blogspot.com/2009/01/static-methods-and-classes-are-always.html
答案 4 :(得分:0)
我认为静态类的使用很好 - 特别是在单线程应用程序中。就像其他人所说的那样,你唯一的选择是传递某种包含这些列表的上下文对象。
在这种情况下,我个人认为,您已经为您的问题选择了最佳解决方案。它易于实施,易于使用,并且如果需要,可以轻松更改。