[英]Ensure that all NEW instances of a class implements ALL fields or properties
[英]Changing class properties for all instances
我用Microsoft XNA制作了一個簡單的游戲,並且我有一個Enemy.cs
類,該類包含一個屬性enemyMoveSpeed
。
public class Enemy
{
float enemyMoveSpeed { get; set }
}
在更新部分中的Game1.cs
中,我放置了一個計時器,該計時器將不斷更改以下屬性。
protected override void Update(GameTime gameTime)
{
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
timer -= elapsed;
if (timer < 0)
{
foreach (Enemy E in enemies)
{
E.enemyMoveSpeed += 1;
}
timer = TIMER; //Reset Timer
}
}
更改后,每個新的敵人實例都會受到影響。 有人可以告訴我如何實施此方法嗎?
建立清單
List<Enemy> MyEnemyList;
//of course you will have to add Enemies to this list somehow. Probably you already have a list or an array, wich behaves the same for this purpose.
foreach (Enemy E in MyEnemyList)
{
E.enemyMoveSpeed += 1; //if you are incrementing the speed of everyone by 1.
//or any other option you think is better
}
為新速度使用靜態屬性,並且在您的Enemy構造函數中,您可以設置instance屬性以匹配該屬性。
就像是
class Enemy
{
public static int NewEnemySpeed { get; set;}
public int Speed {get; set;}
public Enemy()
{
Speed = NewEnemySpeed;
}
}
在您的Game1.Update中,您可以執行此操作
Enemy.NewEnemySpeed = ..//some new speed
也許這樣的事情會幫助您。
public class Enemy
{
public Enemy()
{
EnemyState = new EnemyState { IsDirty = true, Position = Vector2.Zero };
Speed = 3.0f;
}
public EnemyState State { get; set }
public float Speed { get; set; }
}
public class EnemyState
{
public bool IsDirty { get; set }
public Vector2 Position { get; set; }
}
protected override void Update(GameTime gameTime)
{
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
// If should spawn enemy
// var enemy = new Enemy();
// enemy.State.Position = // TODO insert starting position
// enemies.Add(enemy);
// Find all enemies that should be moved
// Set IsDirty = true;
// Move each enemy that IsDirty
timer -= elapsed;
if (timer < 0)
{
foreach (Enemy enemy in enemies.Where(e => e.State.IsDirty))
{
enemy.State.Position.X += enemy.Speed;
enemy.State.IsDirty = false;
}
timer = TIMER; //Reset Timer
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.