繁体   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