我已经为游戏实现了一种转向行为形式,并且每次使用编辑器时,设计师应该能够选择(当前)七个参数,无论它们应该是 0、随机还是设定数量,以及在以下情况下后两者,随机应该落在哪个范围内或变量应该得到哪个设定量。设置将保存在文件中,并且必须能够随时加载。
我最终看到的是构造函数和一大堆字段和属性是痛苦的。 我正在寻找一种更智能的方法来解决这个问题,尤其是在以后添加更多参数时。
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
}
以及每个参数的以下块,因此也是七次。
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;
}
}