好吧,伙计们,所以我有一个GameObject类,我将它继承到我的Player类。 所以我在构造函数中完成了这个:
public Player(Vector2 position, Texture2D tex):base(position,tex)
{
}
现在,我有一个Draw方法,我需要Texture来使用Draw方法。 但是因为我使用了GameObject类中的Texture,所以我不能在这个方法中使用纹理。 我能做些什么呢? 如果你什么都不懂,请发表评论。
提前致谢。
答案 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.
}
}