我正在創建一個遊戲(在Unity中)。我希望將輸入處理從遊戲邏輯中分離出來,以便它能夠跨平臺。我有一個名爲IInputHandler
的接口,可以在不同的平臺上以不同的方式實現。例如,訂閱C#中的界面事件
public class AndroidInputHandler : IInputHandler
或
public class PcInputHandler : IInputHandler
我想這個接口,這樣我可以做這樣的事情的原因是:
public class PlayerController {
private IInputHandler _inputHandler;
private Player _myPlayer;
// ...
_inputHandler.ForwardKeyPressed += _myPlayer.MoveForward();
正如你所看到的,我想它的接口我可以訂閱的方法,以便任何時候按下「向前移動」鍵,無論是PC上的「W」鍵還是Android屏幕上的輕按,我的Player
都會向前移動。我曾嘗試在我的IInputHandler
界面中使用delegates
,但代表和界面似乎不能很好地一起玩。我怎樣才能達到我想要做的?
編輯:我已經試過什麼:
public interface IInputHandler {
event ForwardKeyPressed();
錯誤消息:「類型或命名空間ForwardKeyPressed
無法找到」
你能告訴有關問題的一些實際的代碼?您可以在界面中定義事件,然後按照您的要求使用它們。 –
當然。也許我只是對語法不熟悉,但是當我嘗試在接口中使用下面的方法時,編譯器會抱怨:'event ForwardKeyPressed()'。它說「找不到類型或命名空間'ForwardKeyPressed'」。 – Alex
請編輯與代碼和確切的錯誤信息的問題。這可能只是一個語法問題 –