【发布时间】:2012-12-08 04:31:59
【问题描述】:
我只是在寻找可以使此代码更好的任何建议。如果我以这种方式继续下去,我认为这是可以避免的大量代码,但现在我无法做到这一点。这将很快失去控制。
public enum PhysicMaterialType
{
SoundFailure = 0,
AsteroidBall,
BalloonRubber
}
public void PlaySoundBasedOnCollision ( PhysicMaterialType phyMatA, PhysicMaterialType phyMatB )
{
switch ( phyMatA )
{
case PhysicMaterialType.AsteroidBall:
{
CheckAsteroidBallCollision ( phyMatB );
break;
}
case PhysicMaterialType.BalloonRubber:
{
CheckBalloonRubberCollision ( phyMatB );
break;
}
}
}
void CheckAsteroidBallCollision ( PhysicMaterial phyMatB )
{
switch ( phyMatB )
{
case PhysicMaterialType.AsteroidBall:
{
//Play AsteroidAsteroidBallSound
break;
}
case PhysicMaterialType.BalloonRubber:
{
break;
}
}
}
【问题讨论】:
-
如果
phyMatA是AsteroidBall 而phyMatB是BalloonRubber,你想发生什么? (反之亦然)如果它们都是同一类型,您是否只有声音播放? -
这只是一个简短的例子,我目前有大约 15 种材料,它们都可以相互碰撞并且都可以播放声音。虽然如果你交换 phyMatB 击中 phyMatA 的顺序,它会播放与 phyMatA 击中 phyMatB 相同的声音。
标签: c# optimization audio refactoring unity3d