Unity3D コーディング C# を使用してゲームに取り組んでいます。
私は純粋な OOP 環境から Unity に来たので、コンポーネントベースのアプローチは私にとって無意味でした。そのため、私たちの武器システムでは、継承ツリーとオブジェクト階層アプローチを使用して純粋に OOP を使用しました。コードに新しい機能や機能を追加するのに時間を費やすほど、この設計は柔軟性に欠けることに気づきました。そのため、今はコンポーネント ベースの設計に傾倒しています。
Mr.Jamoraがここで提案したように、継承よりも構成を優先するアプローチを使用した場合に十分かどうかを尋ねて、問題をここに投稿しました。
彼の解決策は本当に良さそうです。しかし、私が複数の武器を持っていた場合、単純に不十分であり、同じロジックを実装するとReload
、IReloadable
public interface IReloadable
{
void Reload();
}
public interface IUpgradable
{
void Upgrade();
}
public interface IShooter
{
void Shoot();
}
public SMG : IShooter, IReloadable
{
void Shoot()
{
// shooting logic 1
}
void Reload()
{
// reloading logic 1
}
}
public AssaultRifle : IShooter, IReloadable, IUpgradable
{
void Shoot()
{
// shooting logic 2
}
void Upgrade()
{
// upgrade logic 1
}
void Reload()
{
// reloading logic 1 -- SAME LOGIC
}
}
ご覧のとおり、コードの重複がありますが、私はそれが好きではありません。これは回避できますか?(クリーンで柔軟な方法で)
一般的に、これ (継承より構成) は、Unity で武器システムを作成するための良い方法ですか? - それとも、Unity のコンポーネント ベースのアプローチを使用して、Shooter
およびReloadable
コンポーネント (スクリプト) を作成し、それらを武器のゲーム オブジェクトにアタッチする方がよいですか?
よろしくお願いします。