2013-11-26 65 views
4

我有一個「設計模式」的問題。我想讓玩家改變他的狀態。可以說,如果你願意,我有三個國家或超級大國。他們每個人都有不同的能力。如果這種能力只是基於某些屬性(可以說是質量或速度),我可以在玩家身上改變它,一切都會正常工作。如何更改玩家狀態?

但是如果有其他一些功能發生了變化呢。可以說,如果玩家處於狀態2,並且跳躍動畫是不同的,並且其他一些事情改變。現在我知道我可以通過在狀態更新循環中進行大量檢查,但是我想讓這個更優雅。

我的想法到現在爲止是讓generalPlayer對象和每個特殊的球員,從它繼承,並增加了特殊能力,而當玩家改變狀態我想那種改變球員的情況下,以該實例。

有沒有更好的方法?我正在使用c#作爲腳本語言

+1

你有沒有聽說過'State'設計模式?另外,如果你的國家不相互瞭解,那麼'Strategy'模式也會相當不錯。順便說一句,我也很喜歡Unity 3D,如果你想讓我們安排一對編程會議來幫助你解決你的問題。這個問題是相當普遍的回答在文本中沒有項目的一些細節 –

+0

我會去檢查這兩種模式。我們完全可以做到這一點。我正在致力於一個簡單的2D遊戲。 – gorgi93

+1

我的Skype是在配置文件中,隨時寫。我正在學習團結,也從2D遊戲開始了,但我可以用C#代碼組織提供幫助。 –

回答

0

我已經找到了最好的花呢sollution感謝朋友。我使用的是戰略模式,然後將不同的實例放到我用來控制玩家的界面上。它的作用像魅力。感謝所有的幫助。

+0

爲什麼不把你的'Strategy'的一些僞代碼和你如何改變你的播放器實例類型?這將提高你的很多答案,我們可以討論的改進,它會幫助別人 – letiagoalves

1

我用這種方法遇到的問題是您對一個玩家使用多個不同的對象。每次播放器更改狀態時都會傳遞數據,這可能會造成一些混亂。由於C#有代表,這對於我們的目的,行爲很像一流的功能,可以通過改變了對每一個國家的變化具有一定的套路和字段值更改播放器的行爲。這使您可以將數據保存在一個對象中,並在不依賴條件的情況下即時更改行爲。有一個我聽過很多次的簡潔短語,一個對象封裝了狀態和行爲。在C#中,您可以通過操作字段值來更改狀態,並通過依賴委託來更改行爲。這應該涵蓋你的問題。