我想弄清楚一個可以輕鬆修改對象的系統。修改器系統C#
這裏是一個例子,可以說我有一個從Entity繼承的Entity2D。 Entity2D有一個Position屬性。
現在我有一個名爲ModifyPosition的類繼承自Modifier。
下面是一些代碼
public class Entity
{
/// <summary>
/// Applies the modifier to this entity.
/// </summary>
/// <param name="modifier">The modifier to apply.</param>
public void ApplyModifier(Modifier modifier)
{
modifier.Apply(this);
}
}
/// <summary>
/// Modifies an entities position
/// </summary>
public class ModifyPosition : Modifier
{
/// <summary>
/// Initializes a new instance of the <see cref="ChangePosition"/> class.
/// </summary>
/// <param name="position">The position.</param>
public ChangePosition(Vector2 position)
{
this.Position = position;
this.IsModifyingChildren = false;
}
/// <summary>
/// Gets the position.
/// </summary>
/// <value>The position.</value>
public Vector2 Position { get; private set; }
/// <summary>
/// Applies this change to the specified entity.
/// </summary>
/// <param name="entity">The entity.</param>
internal override void Apply(Entity entity)
{
((Entity2D)entity).X += this.Position.X;
((Entity2D)entity).Y += this.Position.Y;
}
}
但如果你在呼喚這種每秒多次我認爲,鑄件會慢下來。
有沒有另外一種方法可以解決這個問題,而不必施放?
你做了什麼,刪除並重新提問?不是一種很好的方法來獲得答案 – 2010-07-21 23:58:22
讓一個對象來自外部並修改一個對象(並且可以打破幾個指導原則)可能很奇怪。是否有任何理由需要這樣做,而不是將修改代碼放在對象內部? – 2010-07-21 23:58:26
@盧卡斯這是一個accedent ... = /和我沒有得到閱讀已發佈的答案,所以我試圖重新問它...對不起。你之前回答過嗎?你介意重新發布你的答案嗎?再次抱歉,這是我的錯誤。 @silky我在想,如果我有辦法從外部修改對象,那麼它就會更容易在編輯器中更改對象的屬性。 – 2010-07-22 00:03:02