私はゲーム用のステアリング動作のフォームを実装しました。エディターを使用するたびに、デザイナーは (現在) 7 つのパラメーターを 0、ランダム、または設定量のいずれにするかを選択できる必要があります。後者の 2 つは、ランダムがどの範囲に収まるか、または変数が取得する量を設定するかです。設定はファイルに保存され、いつでもロードできる必要があります。
私が最終的に得たのは、コンストラクターと、非常に多くのフィールドとプロパティを見るのが苦痛です。 特に後でパラメーターを追加するときに、この問題を解決するためのよりインテリジェントなアプローチを探しています。
public enum SteerType
{
None,
Random,
Variable
}
public IdleSteering(SteerType rotationOnIntervalType, int rotationOnInterval,
SteerType rotationOnCollisionType, int rotationOnCollision,
SteerType breakIntervalType, int breakInterval,
SteerType breakTimeType, int breakTime,
SteerType rotationOnBreakType, int rotationOnBreak,
SteerType rangeFromSpawnType, int rangeFromSpawn,
SteerType speedType, int speed)
{
_rotationOnIntervalType = rotationOnIntervalType;
_rotationOnInterval = rotationOnInterval;
_rotationOnCollisionType = rotationOnCollisionType;
_rotationOnCollision = rotationOnCollision;
<...> //And this five more times
}
そして、すべての単一パラメーターの次のチャンクなので、7 回も同様です。
private SteerType _rotationOnIntervalType;
private float _randomRotationOnInterval;
private float _rotationOnInterval;
public float RotationOnInterval
{
get
{
switch (_rotationOnIntervalType)
{
case SteerType.None:
return 0;
case SteerType.Random:
if (_randomRotationOnInterval.Equals(0))
_randomRotationOnInterval =
MathHelper.ToRadians((float)(-Static.Random.NextDouble() + Static.Random.NextDouble()) * _rotationOnInterval);
return _randomRotationOnInterval;
case SteerType.Variable:
return _rotationOnInterval;
}
return 0;
}
}