Ash*_*ies 2 c# windows polymorphism static
我正在为我的游戏编写一个C#游戏引擎,我遇到了问题.
我需要为每种不同类型的块做一个XNA.Rectangle drawRectangle.
块存储在块列表中,因此必须覆盖可以通过绘制访问而不需要进行大量渲染的属性.
我已经尝试了很多方法,但没有办法.
这是我正在做的当前的一个:
Block.cs
protected static Rectangle m_drawRectangle = new Rectangle(0, 0, 32, 32);
public Rectangle drawRectangle
{
get { return m_drawRectangle; }
}
Run Code Online (Sandbox Code Playgroud)
BlockX.cs
protected static Rectangle m_drawRectangle = new Rectangle(32, 0, 32, 32);
Run Code Online (Sandbox Code Playgroud)
但是,在创建BlockX并进行访问时drawRectangle,它仍会返回0,0,32,32 .
理想情况下,我可以覆盖drawRectangle成员,但这样做意味着在每个块类中创建一个成员.我只想调整m_drawRectangle.
每个块将被创建数百次,所以我不希望它是非静态的,在构造函数中执行它会很愚蠢.
除了仅使用静态函数初始化每个块中的静态事物之外,还有更好的方法吗?
编辑:
总而言之,我的要求是:
drawRectangle仅覆盖m_drawRectangle.静态成员不是多态的 - 它就像那样简单.请注意,请您谈谈财产留静态-你不必有此刻的静态属性.您有一个实例属性和两个静态字段.
有两种选择: