我正在尝试继承NetworkBehaviour中的一个类,但是每当我继承父类(脚本)就停止工作。
我已经尝试过了:
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脚本运行良好,但是只要我继承它,它就会停止工作。我需要一些帮助。我该如何继承继承网络行为的类。
答案 0 :(得分:1)
请谨慎使用方法的命名! break
是关键字,不应用作方法名称。
然后定义
private void Move()
在您的基类FireFighter
=>在FireCaptain
中不能做
public override void Move ()
virtual
或abstract
,所以根本不能使用override
。private
更改为public
)。private
,您甚至无权调用base.Move();
,因为它只能由实现类本身调用。所以
至2)和3)如果要使其成为子类中的public
,它也必须已经位于基类中public
中。或者,您可以使用protected
,以便只有基类及其继承者可以访问。
要1)要能够在子类中覆盖某个方法,它必须是virtual
或abstract
。所以做到
virtual
,如果您想在基类中有一个实现来定义默认行为,并使其仅可选来覆盖它,例如喜欢
// 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
,如果您不想在基本类中实现,而想强制子类来实现此功能,例如喜欢
// 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();