不能使用Texture传递给基类?

时间:2011-08-13 22:35:53

标签: c# xna

好吧,伙计们,所以我有一个GameObject类,我将它继承到我的Player类。 所以我在构造函数中完成了这个:

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

现在,我有一个Draw方法,我需要Texture来使用Draw方法。 但是因为我使用了GameObject类中的Texture,所以我不能在这个方法中使用纹理。 我能做些什么呢? 如果你什么都不懂,请发表评论。

提前致谢。

3 个答案:

答案 0 :(得分:4)

您应该发布 GameObject 类的片段。使用我的心灵能力,我认为你的Texture对象在 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.
    }
}

阅读Access Modifiers以了解有关使用私人,受保护等的更多信息

答案 1 :(得分:2)

GameObject如何存储tex?可能无法从派生类Player访问它所设置的字段。如果是这种情况,请尝试将其访问权限更改为protected

答案 2 :(得分:1)

您是否已将_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.
  }
}