簡體   English   中英

游戲開發中的搖擺:游戲循環

[英]Swing in game development: The game loop

我正在使用Swing開發Java 2D游戲。 我在不是EDT的線程中運行游戲循環。 大多數時候沒有問題。

在我的游戲中,對Swing元素的唯一操縱是在每個游戲循環周期內repaint() JPanel

所以我的問題是:是否應該使用SwingUtilities.invokeLater()將整個游戲循環放入EDT中? 還是應該在不是EDT的線程中運行游戲循環?

您不應該讓游戲邏輯在EDT上執行,因為它很容易使您的UI無法響應。 只需讓您的主循環在單獨的線程上運行並在其中發布輸入事件,然后使用SwingUtilities觸發該線程的UI重繪。

通常,您不應在EDT上執行與繪畫或GUI事件處理沒有直接關系的任何操作。 從技術上講,您可以這樣做,但是,當游戲循環變得更加復雜並且必須執行更多的計算時,這可能會導致問題。

當你有一個專門的游戲線程(執行游戲循環)中出現的同步問題和EDT來自一個事實,即通常游戲線程將執行修改游戲的對象, EDT是畫這些物體會發生這種情況。 有關更多信息,您將必須發布一些示例代碼,這些代碼示例游戲中當前出現的實體,如何在游戲循環中對其進行修改以及如何在EDT中進行繪制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM