私は2D RPGで作業しています。クラス「BaseEnemy」をゲーム内のすべての敵に適用しています。それは、そのstat定義、すべての敵が共有する基本関数などを含んでいます。各敵は独自のスクリプトを取得し、BaseEnemyクラスを継承し、BaseEnemyコンストラクタを使用してstatを設定します。クラスを継承したnon-monodevelopクラスを第3クラスから見つける方法
public class LesserSlime : MonoBehaviour {
public BaseEnemy myEnemy = new BaseEnemy(1, 5, 5, 5, 5, 5, 5, 5);
public EnemyHealthBar myHealthBar;
// Use this for initialization
void Start() {
myEnemy.IsSelected = false;
}
私の問題は、私はターン処理のための一般的な戦いコントローラをしようと、戦闘の開始時に初期化されたときには、タグ付けされたすべてのゲームオブジェクトの配列「敵を作るこれ、選択された敵を見つけ出すよです彼らはそれらに異なる敵のスクリプトを持っているかもしれないので1がスライムかもしれ(各indiviual敵のためにBaseEnemy 『:"開始時に
public class BattleController : MonoBehaviour {
public GameObject[] Enemies;
私の問題があるからである私がアクセスする方法がわかりません』、 1つは妖精かもしれないなど)が、すべてBaseEnemyクラスの独自のインスタンスを呼び出します。とにかく、私はBattleControllerクラスからそれらのアクセスを見つけることができますか?これについて別の方法で進むべきでしょうか?
のようにアクセスすることができBaseUnityEnemyクラスを作りますちょうど不思議なことに、なぜあなたは敵の授業をしないのですか? BaseEnemyから継承し、次にBaseEnemyをMonoBehaviourから継承させますか?そうすれば、どの敵タイプであろうと、 'GetComponent()'を使うことができます。 –
Serlite
私は...私はそれを行うことができたことを理解していませんでした。ありがとう! 編集: このエラーが発生しました。「あなたは 'new'キーワードを使用してMonoBehaviourを作成しようとしています。これは許可されていません。MonoBehavioursは、AddComponent()を使用してのみ追加できます。代わりに、あなたのスクリプトはScriptableObjectか基本クラスを継承することができません " 私はAddComponentを使用すると、コンストラクタを呼び出して基本統計情報を設定することはできません、いいえ? – Daymare
あなたはそうではありませんBaseEnemyをMonoBehaviourから継承させると、コンストラクタを呼び出すことができますが、これはうまくいきます。Start()メソッドで必要な値を設定するだけで、コードなしのアプローチを取ることもできます:それらを表示するためにシリアライズされたものとしてマークする必要があります)。 – Serlite