派生类构造函数返回空

时间:2016-04-12 21:48:56

标签: c# oop inheritance unity3d constructor

我正在创建一个国际象棋游戏,在我的代码中,我正在生成用于表示各个部分的对象。

这些类型都是PawnRookKing等类型,并且来自Piece类。

但是,当我尝试创建一个新的Pawn时:

return new Pawn(location, gameObj);

尽管locationgameObj的值有效,但返回的值为null。

(未完成的)PiecePawn类定义如下:

public class Piece : MonoBehaviour
{
protected Coord location;
protected bool isWhite;
protected bool specialUsed = false;

void displayMarkers(List<Coord> targets)
{

}

public void moveTo()
{

}

public void resetColour()
{

}

public virtual void displayTargets()
{

}
}

public class Pawn : Piece
{
public Pawn(Coord loc, GameObject gameObj)
{
    location = loc;
    if (loc.y < 4) { isWhite = true; } else { isWhite = false; }     
}

public override void displayTargets()
{

}
}

任何帮助都会非常感激,因为这让我完全难过。谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用 Unity

在Unity中,您无法使用MonoBehaviour实例化new Pawn(),您必须通过AddComponent<T>方法进行实例化。

因此,参数化构造函数是无用的。

示例:

var pawn = gameObject.AddComponent<Pawn();
pawn.isWhite = true;

有关详细信息,请参阅文档:

http://docs.unity3d.com/ScriptReference/GameObject.AddComponent.html