前提・実現したいこと
unityでc#を使ってゲーム製作しているのですが、共通の処理をしたい時にStaticクラスを作成してそこに共通処理を書いて処理しているのですが、ネットで調べているとユーティリティクラスはオブジェクト指向に反しているからダメとの記述を見かけるのですが、staticクラスを使わずに共通処理を行う場合どのような方法がありますか?
あと、拡張メソッドもstaticクラスを作成してstaticメソッドを定義するので結局はユーティリティクラスと同じなのですか?
例えば、ダメージを受ける処理を
c#
1//敵やプレイヤーなどダメージを受けるものが持つLifeクラス 2public class Life 3{ 4 public int lifepoint; 5 public int defensepower = 5; 6 7 //ダメージを受けた時 実際はもっと複雑な内容 8 void Damage(int attackpower) 9 { 10 //攻撃力が防御力を下回っていたら終了 11 if (attackpower <= defensepower) return; 12 13 int damage = attackpower - defensepower; 14 15 lifepoint -= damage; 16 } 17}
こう書くか
c#
1//敵やプレイヤーなどが持っているLifeクラス 2public class Life 3{ 4 public int lifepoint; 5 public int defensepower = 5; 6 7 //ダメージを受けた時 8 void Damage(int attackpower) 9 { 10 lifepoint -= DamageKeisan.resault(attackpower, defensepower); 11 } 12}
c#
1//計算するクラス 2public static class DamageKeisan 3{ 4 //ダメージの計算 実際はもっと複雑な内容 5 public static int resault(int attackpower, int defensepower) 6 { 7 //攻撃力が防御力を下回っていたら終了 8 if (attackpower <= defensepower) return 0; 9 10 return attackpower - defensepower; 11 } 12} 13
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/22 23:50