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

时间:2017-10-16 11:33:24

标签: c# inheritance unity3d unity2d

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

2 个答案:

答案 0 :(得分:1)

你可以像这样创建一个类玩家。

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

答案 1 :(得分:1)

您可以使用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移动还是虚拟结果都非常相似。如果你有一个默认实现,使用virtual,如果你需要子类来实现它自己的版本,那么使用abstract。

更多信息:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract