我正在创建一个国际象棋游戏,在我的代码中,我正在生成用于表示各个部分的对象。
这些类型都是Pawn
,Rook
,King
等类型,并且来自Piece
类。
但是,当我尝试创建一个新的Pawn
时:
return new Pawn(location, gameObj);
尽管location
和gameObj
的值有效,但返回的值为null。
(未完成的)Piece
和Pawn
类定义如下:
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()
{
}
}
任何帮助都会非常感激,因为这让我完全难过。谢谢!
答案 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