Не можете использовать текстуры, переданные в базовый класс? - PullRequest
0 голосов
/ 14 августа 2011

Ладно, ребята, у меня есть класс GameObject, и я унаследовал его от класса Player.Итак, я сделал это в конструкторе:

 public Player(Vector2 position, Texture2D tex):base(position,tex)
    {
    }

Теперь у меня есть метод Draw, и мне нужна текстура, чтобы использовать метод Draw.Но поскольку я использовал текстуру из класса GameObject, я не могу использовать текстуру в этом методе.Что я могу с этим поделать?Оставьте комментарий, если вы ничего не поняли.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 14 августа 2011

Вы должны опубликовать фрагмент вашего GameObject класса. Используя мои экстрасенсорные способности, я считаю, что ваш текстурный объект объявлен как приватный в GameObject . Измените его на protected вот так:

class GameObject
{
    protected Texture2D _texture;
    public GameObject(Vector2 position, Texture2D tex)
    {
        ...
        _texture = tex;
    }
}

class Player : GameObject
{
    public Player(Vector2 position, Texture2D tex):base(position,tex)
    {
    }

    public override void Draw(...)
    {
        // _texture should be accessible from here.
    }
}

Прочитайте Модификаторы доступа , чтобы узнать больше об использовании личных, защищенных и т. Д.

2 голосов
/ 14 августа 2011

Как GameObject хранит tex?Поле, для которого оно установлено, может быть недоступно из производного класса Player.Попробуйте изменить его доступ на protected, если это так.

1 голос
/ 14 августа 2011

Вы объявили участника _texture защищенным?

public abstract class GameObject
{
  protected Texture2D _texture;

  public GameObject(Texture2D tex) { 
    _texture = tex;
  }

  public abstract void Draw();
}

public class Player : GameObject
{
  public Player(Texture2D tex) : base (tex) { }

  public override Draw()
  {
     //Do stuff with _texture.
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...