在我的游戏中,有很多地方需要在功能完成后播放音频,例如:
import com.coreos.jetcd.EtcdClient;
由于有很多功能需要播放声音,而且每次我都需要添加
class Player{
public AudioClip clip;
void WalkToDestination()
{
//walk code here
AudioManager.Play(clip);
}
}
class GameManger{
public AudioClip clip;
void AfterCompleteLevel()
{
//play level completion animation
AudioManager.Play(clip);
}
}
进入课堂,而public AduioSource clip
进入体内,有太多的重复性工作。
这有什么好的设计模式吗?
答案 0 :(得分:2)
定义基类,并在其中放置共享函数:
public class PlayerBase
{
protected SomeClass clip;
public void PlaySound()
{
AudioManager.Play(clip);
}
}
class Player : PlayerBase {}
class GameManger : PlayerBase {}
直接在派生的PlaySound()
或Player
类中调用GameManager
。
答案 1 :(得分:2)
您可能正在寻找的内容称为Singleton:在使用音频管理器或类似内容时,它们非常有用。
您可以这样声明:
public class YourClassName: MonoBehaviour
{
public static YourClassName instance;
public void Awake()
{
if (!instance)
{
instance = this;
}
}
public void YourMethodToCall()
{
//Do what you want here
}
}
然后从另一个脚本中,您可以使用以下方法访问它:
if (YourClassName.instance)
{
YourClassName.instance.YourMethodToCall();
}