由于这只是我的第二场比赛,我仍然不确定如何不断创建和使用新的对象实例。我知道在actionscript中有一种方法可以创建一个新的实例而不给它一个名字,然后遍历某种类型的列表。但我想知道使用xna在c#中执行此操作的最佳方法是什么。如果有人能提供一个简单的代码示例,我们将不胜感激。
由于
答案 0 :(得分:2)
您是否正在寻找以下内容:
// A sample enemy class
class Enemy
{
public int EnemyStrength { get; set; }
public Enemy(int strength)
{
EnemyStrength = strength;
}
}
class Program
{
static void Main(string[] args)
{
// A List to hold all the enemies
List<Enemy> Enemies = new List<Enemy>();
// Create some enemies
for (int i = 0; i < 5; i++)
{
Enemies.Add(new Enemy(i));
}
// Display the strength of them all.
foreach (Enemy enemy in Enemies)
{
Console.WriteLine(enemy.EnemyStrength);
}
}
}
重要的是Enemies.Add(new Enemy(i)),它实例化并在列表中添加敌人而不将其分配给命名变量 - 我认为这就是你所要求的。
答案 1 :(得分:1)
我并不特别了解XNA,但C#中有很多可以使用的集合。最有趣的是像List<MyObject>
这样的通用类,它提供了强类型列表(即不需要强制转换)。其他选项包括Arrays,Dictionaries(如果你想给它们一些名字,但也希望能够轻松地遍历它们,或者如果你需要能够通过它们找到一个实例一些关键很快。)
还有很多其他的,但这些是最常见的一些。
示例代码(假设您有一个名为敌人的类):
List<Enemy> myList = new List<Enemy>();
for (int i = 0; i < 100; i++)
{
myList.Add(new Enemy());
}
显然,这不会产生无限的敌人,但它显示了如何将一堆新的未命名对象添加到一个简单的列表中。
您可以使用以下内容:
foreach (Enemy badguy in myList)
{
badguy.Update();
}
答案 2 :(得分:0)
XNA通过不断调用Update和Draw来提供无限的游戏循环。正如Chris所说,将对象保存在列表中,每次需要添加新对象时,请在Update方法中对其进行实例化。然后让Update和Draw方法遍历列表并分别调用每个对象的Update和Draw方法。
答案 3 :(得分:0)
使用http://en.wikipedia.org/wiki/Flyweight_pattern是一个良好的开端,因为它可以节省资源。