![](/img/trans.png)
[英]Passing a reference to a class that inherits from a class that inherits from an interface
[英]Inherits from a class that inherits networkBehviour
我正在嘗試繼承NetworkBehaviour中的一個類,但是每當繼承父類(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的類。
注意您的方法命名! 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"); }
如果您不想在tha基類中實現,並且想強制子類實現此方法,則可以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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.