因此,我对继承和接口的概念还很陌生,我不确定如何实现我想要做的事情。
我有一个character类,它定义了一个角色的位置,旋转方向,纹理,然后我想继承这个类和一个Player和Enemy类,这样我就可以对玩家和敌人使用相同的移动和绘图类,同时添加额外的功能来控制AI。
所以我有一个character类,它是由静态player类继承的,但我无法通过Player类访问position,它说需要一个对象引用。
那么,如何使用继承在播放器和ai之间共享函数,同时仍然能够通过子类访问character类中的变量?
发布于 2012-03-27 02:30:20
将基类实现为抽象类,而不是静态类。如果没有对实际对象的引用,静态方法将无法访问对象的属性或字段。
发布于 2012-03-27 02:26:51
在此之后,您只需使用"base“关键字来引用父类,这与使用"this”来引用类的当前实例的方式类似。
例如:
//note: abstract is not a pre-requisite for inheritance
abstract class Character
{
protected float x;
protected float y;
protected float z;
//etc etc
}
public class AIBasic : Character
{
public void move()
{
//purely an example
base.x++;
base.y++;
base.z++;
}
}发布于 2012-03-27 02:29:46
继承不是这个问题的最佳解决方案。相反,可以考虑使用IoC (控制反转),并创建单独的绘图和移动类。然后将它们组合到单个字符实例中。
Ninject是我最喜欢的IoC工具之一,它们的教程相当完整。事实上,它演示了一个非常简单但常见的游戏角色类。
https://stackoverflow.com/questions/9877554
复制相似问题