2016-06-15 6 views
0

私のユニティでは、ユニットは新しい武器を拾うことができます。関連する4つのクラスがあります。ユニット、射撃砲(どちらもゲームオブジェクトの独特のクラスです)、武器、弾頭(どちらも3d空間のgameオブジェクトとして存在すべきではありません)。武器依存の実装(ユニット/武器/弾薬/弾頭)[Unity3D C#]

武器のインスタンスには、さまざまな属性(損傷、範囲など)に加えて、弾頭と弾丸をプロパティとして格納する必要があります。前者はクラスインスタンスであり、後者はプレハブである。武器クラスには、弾丸をインスタンス化し、それを目標とし、弾頭を適用し、再装填する射撃方法があります。

私はこの問題に遭遇しました。モノブロックを継承しないか、scriptableobjectsであるクラスは、エディタウィンドウ(またはコードを通して私の知識)にプレハブを割り当てることができません。エディタでもscriptableオブジェクトを割り当てることはできません。私は射撃兵を査察官やコードによって武器や武器に割り当てることはできません。そして、scriptableオブジェクトとmonobhaviourクラスを一緒にストリングすると、私のコードが壊れてしまいます。

これまで、シュートメソッドとともにプレハブリファレンスをユニットクラスに割り当てることで、これまでの作業ができました。現在のところ、ベース弾頭とベース武器クラスがあり、そこから子供たちが派生しています。これは、私が残したいものです。しかし、私は武器に射撃機能を入れて(意味があるのですか?)、ユニットを兵器からきれいに分離したいので、武器のメソッドとプロパティをすべてユニットクラスに入れなければならないのはうれしいです。

このシステムを実装する最善の方法は何ですか?

+0

私はそれを言いたくはありませんが、あなたはバージョンコントロールを考慮する必要があります(あなたが言及したように、それは "うまくいきました")。 – MiningSam

+0

@MiningSamそれは常に良いアドバイスですが、問題はモノブロックと非クラスを相互作用させようとしているため、重要ではありません。エラーが発生し、その実装をどのように最善に解決するべきかわかりません。 – inappropriateCode

答えて

1

WeaponがBaseWeaponから継承したければ、Prefab参照を設定するために必要なMonoBehaviourから直接継承することはできません。

私はそれを見る方法は、おそらくMonoBehaviourから継承しながら、それぞれの武器が実装するインターフェイスとしてBaseWeaponを実装することです。

+0

ありがとう!ただ確認するには、インタフェースbaseweaponがこの場合モノハバウアから継承すると言うことを意味しますか?私はインスペクタで一揃いのスクリプトを割り当てても問題はありませんでした。この場合、ユニットの兵器スクリプトフィールドに武器スクリプトを割り当てます。あなたはこれがあなたが提案したものをあまりにも可能にすべきだと言っているのですか? – inappropriateCode

+1

つまり、BaseWeaponは何も継承する必要はありません。それはインターフェイスです。 武器は、クラスとして、MonoBehaviourから継承します。これにより、プレハブやスクリプト、その他の目的を達成するために参照できるようになります。 WeaponはBaseWeaponインターフェイスも実装しており、BaseWeaponクラスのすべてのメソッドと変数にアクセスできます。この場合、基本的に、Weaponクラスは同時に2つのクラスから継承することができます。 – DisturbedNeo

+0

もちろん、もしあなたが本当にしたいのであれば、BaseWeaponもMonoBehaviourから継承することができると思います。私はそれがどうやってやりとりするかわからない。 – DisturbedNeo

関連する問題