Я пытаюсь выяснить систему, которая может легко изменять объекты «на лету».Modifier System C#
вот пример. Допустим, у меня есть Entity2D, который наследуется от Entity. Entity2D имеет свойство Position.
Теперь у меня есть класс 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;
}
}
Но если вы вызываете это несколько раз в секунду, я думаю, что отливка бы замедлить его.
Есть ли другой способ обойти это без необходимости бросать?
что вы сделали, удалите и перепросите вопрос? Не лучший способ получить ответы –
Возможно, странно, что объект появился и изменил объект снаружи (и, возможно, нарушил несколько рекомендаций). Есть ли какая-то причина, по которой вам нужно это делать, в отличие от внутреннего кода модификации объекта? –
@ Лукас это был приятель ... = /, и я не получил, чтобы прочитать ответы, которые были опубликованы, поэтому я попытался спросить об этом ... извините. Вы ответили раньше? не возражаете ли вы повторить ответ? снова жаль, что это была моя ошибка. @silky Я думал, что если бы у меня был способ изменить объект снаружи, это облегчило бы возможность изменять свойства объекта на лету, как в редакторе. –