關於遊戲邏輯模式的觀點 誰呼叫誰

2022-08-16 22:51:16 字數 865 閱讀 6429

在這裡是根據我個人做遊戲過程中總結的觀點(仍然著重宣告,如果有人不同意,可以認為這是我寫給自己看的)

在遊戲中我們常常會遇到乙個主要的問題,誰在修改誰,誰呼叫誰,當兩個物體a和b發生互動從而觸發功能function01,那麼功能function01應該寫在a中還是應該寫b中,function01是由a來呼叫還是b來呼叫呢。

針對上面的問題,也許哪位大牛看了會馬上提出各種設計模式,我也想過這個問題,但是無論看了多少遍設計模式,我還是不會,因為無論這些設計模式如何好,我仍然發現似乎這對於遊戲似乎過於複雜了,遊戲不像普通的應用程式程式設計,遊戲中過多的繼承,模式的約束反倒使得遊戲程式設計變得過於複雜。經過大量的嘗試之後我又回到unity引擎(你以為我在說什麼,我一直圍繞unity引擎討論的)最初原旨,面向元件程式設計。什麼各種模式都滾蛋吧,我又不是做引擎的,我只是想做遊戲。似乎扯遠了,上面這些只是我再次提醒自己而已,下面回到正題。

為了簡單起見,我們以傳送玩家為例:

如果玩家a要在b的位置傳送到下乙個場景的c點,我們有兩種方式。一,玩家a設定觸發器triggera,如果觸發在b的位置,並且如果按下i鍵,那麼進行傳送;二,b設定觸發器,如果玩家a進入觸發區域,並且按下i鍵,那麼進行傳送。這裡使用使用那種方式呢?傳送功能寫在a中還是b中呢?或者還有更好的辦法嗎,首先我們討論兩種原則(我自己定的):

一,誰主動誰被動:很明顯,玩家是主動,所以玩家應該是進行傳送的人,所以傳送功能的呼叫在玩家a身上進行。

二,單一功能原則:在這裡我們玩家的主要功能是跑和跳,所以傳送功能及相關引數不應該寫在玩家身上,我們玩家應該是覺察到自己可以傳送,那麼呼叫可以呼叫的傳送功能,b是傳送位置資訊點,所以應該將傳送功能方法及相關引數寫在b中,當玩家進入b的區域時,呼叫b的傳送功能進行傳送

飄逸的python inspect誰呼叫了我

當程式出現詭異的bug時,我們需要層層去跟蹤,尤其是要理清順序。這時如果有個清晰的呼叫脈絡除錯就容易多了。利用inspect模組的getframeinfo方法來實現這需求。上 感受下。python view plain copy import inspect deffoo who inspect.g...

關於我是誰的思考

如果 我 就是我的身體,那麼,2.4年之後組成我身體的細胞全部更新了,那麼 我 還是我嗎?如果 我 就是我的思想,那麼,我的思想是什麼?我的思想自出生以來積累的知識 經驗。我 就等於經驗嗎?特修斯之船 最為古老的思想實驗之一。最早出自普魯塔克的記載。它描述的是一艘可以在海上航行幾百年的船,歸功於不間...

誰改變了中國遊戲的命運?

今年 十一 周期間,許多遊戲業內人士和鐵桿玩家的目光都聚集在上海新國際展覽中心,因為第二屆中國國際數碼娛樂產品及技術應用展覽會 chinajoy 在此召開。從10月4日展會開幕,至10月7日圓滿結束,來自世界各地的130多家廠商各顯神通,打響了一場沒有硝煙的產品實力展示之戰 詳細內容見 消費電子世界...