大家好我是用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