多个统一游戏对象 C# 的继承

Inheritance for multiple unity gameObjects C#

虽然我对 python 有中高级知识,但我只是 unity 和 C# 的新手。我已经学习了 C# 的基本元素,目前正在尝试使用 Unity 2d 平台创建 Pong 游戏。我不确定两个游戏对象是否有一种简洁明了的方法,例如main_playercomputer_player 从单个 class player 继承并具有自己定义的函数,例如move()?

您可以像这样创建一个 class 播放器。

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

您可以使用抽象或接口两种方法。

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是abstract还是virtual,结果是很相似的。如果你有默认实现,就用virtual,如果你要求子类实现自己的版本,就用abstract。

这里有更多内容:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract