簡體   English   中英

多個unity gameObjects C#的繼承

[英]Inheritance for multiple unity gameObjects C#

盡管我對python有一定的了解,但我對unity和C#還是陌生的。 我已經學習了C#的基本元素,並且目前正在嘗試使用Unity 2d平台創建Pong游戲。 我不確定兩個游戲對象(例如main_playercomputer_player是否有一個簡潔明了的方法從具有自己定義的功能(例如move()的單個類player繼承?

您可以像這樣創建一個班級播放器。

public class Player: MonoBehaviour {
    public virtual void move(){
    }
}

然后像這樣繼承它:

public class Computer_player:Player{
    public override void move(){
       base.move();
       //Extra movement code goes here    
    }
}

您可以繼承main_player的相同方法。 您可以在此處找到更多詳細信息: https : //unity3d.com/learn/tutorials/topics/scripting/inheritance

您可以使用2種方法(抽象或接口)。

public interface IMove{
    void Move();
}

public class Main_player:MonoBehaviour, IMove{
     public void Move(){}
}
public class Computer_player:MonoBehaviour, IMove{
     public void Move(){}
}

您可以在接口上使用GetComponent,但不能使用Inspector中的插槽。 界面不可序列化,因此您無法使它們出現在編輯器中。

為此,您需要抽象。

public abstract class IMove : MonoBehaviour{
    public abstract void Move();
}

public sealed class Main_player: IMove{
     public override void Move(){}
}
public sealed class Computer_player: IMove{
     public override void Move(){}
}

無論您將Move抽象還是虛擬制作,結果都非常相似。 如果具有默認實現,則使用虛擬,如果需要子類實現其自己的版本,則使用抽象。

此處更多內容: https : //docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/abstract

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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