🪔
【C#】abstractを使った共通処理の実装方法【Unity】
経緯
現在作っているゲームにPetとBreederが出てきて、その両方にモデルの生成を行うという処理を実装していたので、これを共通処理として実装できないか色々調べていたらabstractというものを見つけたので試してみました。
abstractを使わない場合
public class A : MonoBehaviour
{
}
public class B : A
{
private int petModelId;
public void InitializeModel()
{
//なんか色々処理
var modelPrefab = PrefabManager.Ins.PetPrefabs[petModelId];
//なんか色々処理
}
}
public class C : A
{
private int breederModelId;
public void InitializeModel()
{
//Bと同じ処理
var modelPrefab = PrefabManager.Ins.BreederPrefabs[breederModelId];
//Bと同じ処理
}
}
もともとは上記のような感じだったのですが、abstractを使うことで下記のような感じにまとめることができました。
abstractを使った場合
public abstract class A : MonoBehaviour
{
public void InitializeModel()
{
//なんか色々処理
GetModelPrefab();
//なんか色々処理
}
protected abstract GameObject GetModelPrefab();
}
public class B : A
{
private int petModelId;
protected override GameObject GetModelPrefab()
{
return Owner_Pet_PrefabManager.Ins.PetPrefabs[petModelId];
}
}
public class C : A
{
private int breederModelId;
protected override GameObject GetModelPrefab()
{
return Owner_Pet_PrefabManager.Ins.BreederPrefabs[breederModelId];
}
}
Discussion