J'essaye de comprendre un système qui peut facilement modifier des objets à la volée.Modifier le système C#
Voici un exemple, Disons que j'ai un Entity2D qui hérite de Entity. Entity2D a une propriété Position.
Maintenant, j'ai une classe appelée ModifyPosition qui hérite de Modifier.
Voici un code
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;
}
}
Mais si vous appelez cette opération plusieurs fois par seconde je pense que le casting serait ralentir.
Existe-t-il une autre façon de procéder sans lancer?
qu'avez-vous fait, supprimez et posez à nouveau la question? Ce n'est pas un bon moyen d'obtenir des réponses –
Il est probablement étrange d'avoir un objet qui vient modifier un objet de l'extérieur (et qui brise plusieurs lignes directrices). Y at-il une raison pour laquelle vous avez besoin de faire cela, par opposition à avoir le code de modification interne à l'objet? –
@Lucas c'était un accedent ... =/et je n'ai pas pu lire les réponses qui ont été postées donc j'ai essayé de le demander ... désolé. Avez-vous répondu avant? Pourriez-vous republier votre réponse? encore désolé c'était mon erreur. @silky Je pensais que si j'avais un moyen de modifier l'objet de l'extérieur, il serait plus facile de pouvoir modifier les propriétés de l'objet à la volée comme dans un éditeur. –