我目前正在将我的游戏引擎语言从 c++ 更改为 c#。在 c++ 中,我可以简单地在我的类中继承两个类,这使事情变得更简单,但是我发现这在 c# 中是不可能的。相反,我必须使用接口。
我四处寻找示例,我知道这里有很多;我不知道如何在我的情况下实现它。
请注意,我按照教程生成此代码,因此我对多态性的了解可能是错误的。
C++ 代码:
class TileMap : public sf::Drawable, public sf::Transformable
{
...
private:
//this virtual function is simply so we don't have to do window.draw(target, states), we can just do window.draw(instance)
//this is called polymorphism?
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
// apply the transform
//this isn't our method, i assume it's something in draw() by default.
//or this generates the finished quads in one image instead of multiple ones.
states.transform *= getTransform();
// apply the tileset texture
//this puts the texture on to what we're going to draw (which is converted in to a single texture)
states.texture = &m_tileset;
// draw the vertex array
target.draw(m_vertices, states);
}
}
我的 tilemap 类继承了Drawable
该类。states.transform *= getTransform()
我需要继承Transformable
类的方法。
但是,我不能像 c++ 一样在 c# 中做到这一点,继承这两个类是行不通的。我认为这就是我需要使用接口的地方。
public interface Transformable{ }
public interface Drawable : Transformable{ }
我想在 Drawable 类中我会实现虚拟绘图功能,但是,我实际上并没有从 Transformable 实现 getTransform 函数,所以我不知道如何像这样访问它。
有人可以告诉我如何使用接口来使用我在此处提供的功能吗?
谢谢。