多个统一游戏对象 C# 的继承
Inheritance for multiple unity gameObjects C#
虽然我对 python 有中高级知识,但我只是 unity 和 C# 的新手。我已经学习了 C# 的基本元素,目前正在尝试使用 Unity 2d 平台创建 Pong 游戏。我不确定两个游戏对象是否有一种简洁明了的方法,例如main_player
和 computer_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
虽然我对 python 有中高级知识,但我只是 unity 和 C# 的新手。我已经学习了 C# 的基本元素,目前正在尝试使用 Unity 2d 平台创建 Pong 游戏。我不确定两个游戏对象是否有一种简洁明了的方法,例如main_player
和 computer_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