继承自继承 networkBehviour 的 class
Inherits from a class that inherits networkBehviour
我正在尝试继承 NetworkBehaviour 中的 class,但每当我继承父 class(script) 时,它就会停止工作。
我试过这个:
using UnityEngine;
using UnityEngine.Networking;
public class FireFighter : NetworkBehaviour
{
private void Update()
{}
private void Move()
{}
private void break()
{}
}
public class FireCaptain : FireFighter
{
public override void Move ()
{
base.Move();
Debug.Log("The captainMoved.");
}
}
简而言之,FireFighter 脚本运行良好,但每当我继承它时,它就会停止运行。我需要一些帮助。我怎样才能继承继承 Networkbehaviour 的 class。
注意方法的命名! break
是关键字,不应用作方法名称。
然后你定义了
private void Move()
在你的基地classFireFighter
=> 在 FireCaptain
你不能做
public override void Move ()
- 因为它不是
virtual
或abstract
所以你根本不能使用override
。
- 即使您不能在覆盖中更改范围(从
private
到 public
)。
- 并且由于它在您的子 class 中是
private
您甚至无法调用 base.Move();
因为它只能由实现 class 调用本身。
所以
到 2.) 和 3.) 如果你想让它在子 class 中是 public
它也必须是 public
已经在基础 class.或者您可以使用 protected
,这样只有基础 class 及其继承者可以访问。
至 1.) 为了能够在您的 subclass 中覆盖方法,它必须是 virtual
或 abstract
。那就做吧
virtual
如果你想在基础 class 中有一个实现来定义默认行为并使其仅 可选 覆盖它例如喜欢
// subclasses don't have to implement and override
// this method but can. Also the base.Move(); is optional
public virtual void Move()
{
Debug.Log("You might want to override this to implement a movement");
}
abstract
如果您不想在 class 基础上实现并且想要 force subclasses 来实现这个,例如喜欢
// subclasses will throw a compiler error if they
// do not implement this method
// (without base.Move(); since hte base has no implementation)
public abstract void Move();
我正在尝试继承 NetworkBehaviour 中的 class,但每当我继承父 class(script) 时,它就会停止工作。
我试过这个:
using UnityEngine;
using UnityEngine.Networking;
public class FireFighter : NetworkBehaviour
{
private void Update()
{}
private void Move()
{}
private void break()
{}
}
public class FireCaptain : FireFighter
{
public override void Move ()
{
base.Move();
Debug.Log("The captainMoved.");
}
}
简而言之,FireFighter 脚本运行良好,但每当我继承它时,它就会停止运行。我需要一些帮助。我怎样才能继承继承 Networkbehaviour 的 class。
注意方法的命名! break
是关键字,不应用作方法名称。
然后你定义了
private void Move()
在你的基地classFireFighter
=> 在 FireCaptain
你不能做
public override void Move ()
- 因为它不是
virtual
或abstract
所以你根本不能使用override
。 - 即使您不能在覆盖中更改范围(从
private
到public
)。 - 并且由于它在您的子 class 中是
private
您甚至无法调用base.Move();
因为它只能由实现 class 调用本身。
所以
到 2.) 和 3.) 如果你想让它在子 class 中是 public
它也必须是 public
已经在基础 class.或者您可以使用 protected
,这样只有基础 class 及其继承者可以访问。
至 1.) 为了能够在您的 subclass 中覆盖方法,它必须是 virtual
或 abstract
。那就做吧
virtual
如果你想在基础 class 中有一个实现来定义默认行为并使其仅 可选 覆盖它例如喜欢// subclasses don't have to implement and override // this method but can. Also the base.Move(); is optional public virtual void Move() { Debug.Log("You might want to override this to implement a movement"); }
abstract
如果您不想在 class 基础上实现并且想要 force subclasses 来实现这个,例如喜欢// subclasses will throw a compiler error if they // do not implement this method // (without base.Move(); since hte base has no implementation) public abstract void Move();