簡體   English   中英

從繼承networkBehviour的類繼承

[英]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 ()
  1. 因為它不是virtualabstract所以您根本不能使用override
  2. 即使您無法更改覆蓋范圍(從privatepublic )。
  3. 並且由於它在您的子類中是private ,因此您甚至無權訪問base.Move(); 因為它只能由實現類本身調用。

所以

要2.)&3.)如果您希望它在子類中是public ,那么它也必須已經在基類中是public 或者,您可以使用protected以便只有基類及其繼承者才能訪問。

要1.)為了能夠覆蓋子類中的方法,它必須是virtualabstract 所以做吧

  • 如果要在基類中實現定義默認行為,並使其僅可選以覆蓋它,則為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM