我正在Unity3d(c#)中使用箭頭鍵和2個操作按鈕控制字符的2D遊戲。如何正確擴展字符的類
我的問題很簡單,我可以解決它,但解決方案對我來說似乎有點骯髒。我用一個很簡單的狀態機,主人公是在水平或垂直方式移動(地面和梯)
我延長目前的狀態是:
HeroState - > HeroStateStatic - > HeroStateMovement
然後我伸出靜態或移動到最終狀態:
HeroStateMovement - > HeroStateRunning或HeroStateStatic - > HeroSta teLookUp
但是我始終在呼喚它決定下一步該怎麼做了巨大的外部函數(在英雄級),然後切換狀態
我相信我應該有國家本身這個道理,但在規定階梯有不同的檢查和可能的選擇,然後陳述在地板上,我不知道如何修改這些類,使所有必要的代碼只寫一個(這就是爲什麼現在是在英雄,而不是在州)...是在那裏什麼像交叉延伸技術?
(我知道如何使用抽象類和接口,但它可能並沒有解決我的麻煩)
感謝您的幫助
thx回答 - 巨大的決策方法是巨大的,因爲它被所有州共享,我的問題是,許多州共享這個決定解決 - 例如,WalkState RunState和JumpState有幾乎相同的決策解決方案 - d需要的是多重繼承,這在c#中不起作用,我正在c#中尋找其他解決方案。 – arximedes
我不完全理解。你說這個方法很大,因爲它解決了很多狀態。因此,這不是一個普通的決定,因爲它必須解決許多國家的特點。爲什麼不是有一個巨大的方法,你不能在每個國家內的一個較小的決策方法?如果這三個狀態具有幾乎相同的解決方法,它可以從一個基類繼承,那麼爲什麼你需要多重繼承? – Roberto
sry我的英語不是很原生的:D它解決了許多州的決定,例如:跑步或步行運動後,它會詢問英雄是否想跑步或步行或跳躍或停留或轉身,但如果你在房間的盡頭它知道你不能前進,所以你只能轉彎,有一些狀態將你從樓梯移動到梯子,然後它會詢問你可以在梯子上做什麼,我有2個決定功能DecideFloor,DecideLadder,但是你可以在諸如LookUp,LookDown狀態之類的場景中,你可以通過運行例如 – arximedes