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