私はPythonの中間的な高度な知識を持っていますが、私はユニティとC#の初心者です。私はC#の基本的な要素を学び、現在Unity 2dプラットフォームを使用してPongのゲームを作成しようとしています。たとえば、2つのゲームオブジェクトに対してきれいで簡潔な方法があるかどうかは不明です。 main_player
およびcomputer_player
は、それ自身の定義された機能を有する単一のクラスplayer
から継承する。 move()
?複数のユニティgameObjectsの継承C#
答えて
抽象的またはインターフェースの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を使用することができますが、インスペクタ内のスロットを使用することはできません。インターフェイスはシリアル化できないため、エディタに表示することはできません。
この場合、要約が必要です。
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(){}
}
抽象化または仮想化を行うかどうかは、結果がかなり似ています。デフォルトの実装がある場合は、サブクラスに独自のバージョンを実装する必要がある場合はvirtualを使用し、次にabstractを使用します。
ここより:Player`、と `パブリッククラスComputerPlayer:Player` https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract
このようなクラスプレーヤーを作成できます。
public class Player: MonoBehaviour {
public virtual void move(){
}
}
次に、このようにそれを継承する:あなたはmain_playerを継承することができます
public class Computer_player:Player{
public override void move(){
base.move();
//Extra movement code goes here
}
}
同じように。 ここで詳細を見つけることができます:https://unity3d.com/learn/tutorials/topics/scripting/inheritance
あなたがしていることが 'base'を呼び出すならば、メソッドをオーバーライドするポイントはありません。単純に何も書いておらず、通常の継承を働かせてください。 –
Move()メソッドをオーバーライドとしてComputer_playerにマークする方が良いです。あなたの構文は "new void move()"と似ているので、基本メソッドを隠して、関連する警告を生成します。それは良くない。 "move"メソッドの完全な宣言構文は "public override move()"でなければなりません –
これは私の問題ではなく、 'computer_player'と' main_player'が2つの別々のスクリプトに入っているとします。同じ抽象クラス 'Player '。 –
- 1. 継承のC#複数ジェネリック
- 2. 複数継承:Java対C++
- 3. インターフェイスと複数継承C#
- 4. 複数の継承とオブジェクトC#
- 5. 複数レベルの継承。 Entity Framework C#
- 6. 複数の継承
- 7. 複数の継承と複数レベルの継承
- 8. 複数の継承関数
- 9. Java ORM:複数(継承)継承
- 10. 複数の継承、C++、複数のスーパークラスの同じメソッドシグネチャ
- 11. C++複数テンプレート純粋仮想継承
- 12. QObject複数の継承
- 13. Djangoでの複数継承
- 14. 複数レベルの継承
- 15. Python:複数レベルの継承
- 16. 継承と複数のコンストラクタ
- 17. 複数の継承階層
- 18. C++の継承
- 19. C++の継承
- 20. 継承 - ターゲット固有の継承クラスC#
- 21. 複数抽象フォーム継承
- 22. 複数の継承曖昧な関数
- 23. 継承とプライベート変数C++
- 24. 複数レベルの継承とC++の呼び出し基本コンストラクタ
- 25. C++複数のインタフェースを継承し、次のコードでは
- 26. 複数の継承とシングルトンのデザインパターン
- 27. Pythonの継承 - 複数のスーパークラス
- 28. 複数の継承アクティビティの使用
- 29. PHP複数のクラスの継承
- 30. 複数の仮想継承の曖昧
あなたは、基本クラス、'パブリッククラスMainPlayerとして 'パブリック抽象クラスPlayer'を意味ですか? –
はい、つまり、2つの別々のゲームオブジェクトが1つのクラスから継承するということです。 –
継承は非常に基本的なOOP(と非常に基本的なC#)のコンセプトです。あなたのゲームの継承ツリーを正しく実装する方法について、具体的な質問がありますが、この質問は継承コンセプト自体に関するものです。これは、あなたが良いチュートリアルや本から習得したいものであり、StackOverflowで尋ねたいものではありません。 –