我试图找出一个可以轻松地动态修改对象的系统。
这是一个例子,假设我有一个继承自 Entity 的 Entity2D。Entity2D 有一个 Position 属性。
现在我有一个继承自 Modifier 的类 ModifyPosition。
这是一些代码
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;
}
}
但是,如果您每秒多次调用它,我认为投射会减慢它的速度。
有没有另一种方法可以解决这个问题而不必投射?