【问题标题】:Derived Class Constructor Returning Null返回 Null 的派生类构造函数
【发布时间】:2016-08-03 17:46:03
【问题描述】:

我正在创建一个国际象棋游戏,在我的代码中我正在生成对象来表示棋子。

这些都是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()
{

}
}

任何帮助将不胜感激,因为这让我完全难过。谢谢!

【问题讨论】:

  • 显示使用构造函数的代码。因为构造函数不能返回 null
  • 我有,return new Pawn(location, gameObj);

标签: c# oop inheritance unity3d constructor


【解决方案1】:

您正在使用 Unity,

在 Unity 中,您不能使用 new Pawn() 实例化 MonoBehaviour,您必须通过 AddComponent&lt;T&gt; 方法来实现。

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

示例:

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

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

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

【讨论】:

  • 哇...我所要做的就是删除:MonoBehaviour 谢谢:D
猜你喜欢
  • 1970-01-01
  • 2016-07-19
  • 2020-02-28
  • 2011-12-29
  • 1970-01-01
  • 2018-07-21
  • 2018-07-16
  • 2012-11-06
  • 1970-01-01
相关资源
最近更新 更多