大家好我是用Unity3D编程的C#,当我写代码的时候,我偶然发现了一个小问题,我给你写了一个例子,因为我不知道解释我。多态,调用父亲的子方法
class Base
{
public string name;
}
class Derived : Base
{
public void Gun();
}
class BasePlayer
{
public Base x;
}
class SoldierPlayer : BasePlayer
{
}
的情况是这样的,我想要做这样的事情
SoldierPlayer.x.Gun();
但我不知道该怎么办呢
的实际情况是这样的
public class BasePlayerController : MonoBehaviour
{
public BasePlayerManager playerManager;
...
public class RobotPlayerController : BasePlayerController {
...
playerManager = gameObject.AddComponent<RobotPlayerManager>();
我会用新方法
UPDATE 1
我做了示例更好,我想在基本控制器manager.user.energy做,被视为下一类型RobotManager.RobotUser.energy
BaseController
BaseManager
BaseUser
class BaseController
{
BaseManager manager;
public virtual void Move(int x,int y)...
}
class BaseManager {
BaseUser user;
public virtual Pause(bool state);
}
class BaseUser {
int life
}
RobotController
RobotManager
RobotUser
class RobotController : BaseController
{
// manager as RobotManager?
public void Ray(int x,int y);
}
class RobotManager : BaseManager
{
// user as RobotUser?
}
class RobotUser : BaseUser
{
int energy;
}
UPDATE 2 我试图做到这一点
public Run()
{
RobotController rc = new RobotController();
rc.manager.energy;
}
为什么你不从'Base'的'SoldierPlayer'继承?如果你想这样做,在你的'BasePlayer'中它应该有一个像这样的'public Derived x;'的字段。我强烈建议你,你看看[Polymorphismus](https://msdn.microsoft.com/de-de/library/ms173152.aspx)。 –
您正在寻找*抽象类和方法*和*虚拟方法*。谷歌,首先。 –
不应该简单地把'x'变成'Derived'类型吗? – Sinatr