В настоящее время я пытаюсь изучить все тонкости XNA / C #, но в настоящее время я застрял в проблеме: я хочу добавить дополнительные функции в класс, и я не знаю, как вообще начать. Для ясности вот мой текущий код:
public class Actor
{
//Fields
private Vector3 m_location;
//Properties
public Vector3 Location
{
get { return m_location; }
set { m_location = value; }
}
//Constructors
public Actor(float x, float y, float z)
{
Location = new Vector3(x, y, z);
}
public Actor(Vector3 location)
{
Location = location;
}
}
public class Actor2D : Actor
{
//Fields
private Texture2D m_texture;
//Properties
public Texture2D Texture
{
get { return m_texture; }
set { m_texture = value; }
}
//Constructors
public Actor2D(float x, float y, float z) : base(x, y, z) {}
public Actor2D(Vector3 vector) : base(vector) {}
//Methods
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(Texture, new Vector2(Location.X, Location.Y), Color.White);
}
public void Load(ContentManager content, string asset)
{
Texture = content.Load<Texture2D>(asset);
}
}
Логика здесь в том, что все актеры должны иметь местоположение, но они не обязательно должны иметь текстуру, поскольку актер может быть источником света, триггером и т. Д. И т. П. Actor2D похож на это, за исключением того, что он обозначен как Актер, который использует 2D текстуру. Что я хочу сделать, так это иметь возможность добавлять функциональность к любому из этих классов по мере необходимости. Скажем, я хочу, чтобы Actor2D был анимированным, или, как уже упоминалось ранее, я хочу добавить триггер или источник света к нетекстурированному актеру ... Какие идеи помогут мне достичь этих целей?