您的遊戲必須具有或能夠獲得對按鈕管理器的引用。通常你的遊戲將創建並擁有buttonManager。
class Game
{
ButtonManager m_buttonManager;
...
}
你的按鈕管理器可以暴露像OnButtonClicked事件。
class ButtonManager
{
private Button m_playGameButton;
// delegate to define the type of the event handler
public delegate void ButtonClickedEventHandler(ButtonId buttonId);
// event object matching the type of the event handler
public event ButtonClickedEventHandler OnButtonClicked;
void Update()
{
...
if (m_playGameButton.Clicked)
{
// Launch the event when appropriate if there are any subscribers
if (OnButtonClicked != null)
{
OnButtonClicked(ButtonId.PlayGame)
}
}
}
}
您的遊戲類可以訂閱事件並提供處理程序方法。
class Game
{
...
void Initialise()
{
m_buttonManager += ButtonClicked;
}
void ButtonClicked(ButtonId buttonId)
{
switch (buttonId)
{
case ButtonId.PlayGame:
PlayGame();
break;
case ButtonId.OptionsMenu:
OptionsMenu();
break;
}
}
...
}
或者,遊戲類可以輪詢按鈕管理器。
class Game
{
...
void Update()
{
if (m_buttonManager.IsPlayGameButtonHit)
{
PlayGame();
}
else if (m_buttonManager.IsOptionsMenuButtonHit)
{
OptionsMenu();
}
}
...
}
+1:這就是我的做法,這意味着我可以重新使用我的引擎,而不用硬編碼值。 – 2011-01-14 06:58:49