如何将变量从派生类转换为继承类

时间:2019-03-31 19:50:33

标签: c# unity3d

我目前正在将PacMan开发为学校项目。我有一个称为ghosts的基类,它找到从ghost到目标位置的最短路径。我也有继承类,例如red ghost,它们将为基类提供目标以及幽灵的当前位置。当我使用红色鬼影时,它起作用了……在基类中更改了变量,然后可以使用它们,但是对于其他任何鬼影,它都不起作用,而且我似乎看不出为什么。任何帮助表示赞赏:)

    pinkghost = new PinkGhost();
    redghost = new RedGhost();

    pinkghost.SetVariables();
    pinkghost.ChaseMode();
    redghost.SetVariables();
    redghost.ChaseMode();

public abstract class Ghosts
{
    public int ScatterX;
    public int ScatterY;
    public int TargetX;
    public int TargetY;
    public int GhostPosX;
    public int GhostPosY;
    public int StartNodeX;
    public int StartNodeY;
    public float speed = 1.0f;

    abstract public void SetVariables();
    abstract public void ChaseMode();

    public Ghosts()
    {
        //Allows ghost to access pacman coords
        PacMan = GameObject.Find("pacman");
    }


public class RedGhost : Ghosts
{
    public override void SetVariables()
    {
        GhostMov = gameobject.Find("blinky");
        ScatterX = 24;
        ScatterY = 3;
        GhostPosX = 13 + Convert.ToInt32(GhostMov.transform.position.x);
        GhostPosY = 15 - Convert.ToInt32(GhostMov.transform.position.y);
    }
}

// This one works…
class PinkGhost : Ghosts
{
    public override void SetVariables()
    {
        GhostMov = gameobject.Find("pinky");
        ScatterX = 4;
        ScatterY = 3;
        GhostPosX = 13 + Convert.ToInt32(GhostMov.transform.position.x);
        GhostPosY = 15 - Convert.ToInt32(GhostMov.transform.position.y);
    }
}

因此,正如我所说的那样,红色的Ghost setvariables和chasemode可以工作...但是粉红色的幽灵却由于某种原因而没有?

1 个答案:

答案 0 :(得分:0)

我唯一看到的区别是PinkGhost不是公开的。