Android 遊戲開發中的幾種繪圖方式
在大部分 Android 遊戲中,遊戲畫面的更新都是通過單獨線程來完成的,若是直接在主線程上繪製,可能會造成無響應(ANR)等問題,因此需要在單獨線程中完成繪圖。
由於遊戲場景有時會很複雜,可能需要分別繪製背景、控件、人物、文字等內容,部分 3D 遊戲還需要渲染貼圖,因此在單獨線程中繪圖也可能會發生卡頓或丟幀的問題。這個時候就需要想辦法提高繪製效率、優化內存,尤其是頻繁重繪且重繪物體較多的程序。
重繪一般分爲以下兩種方式:
- 被動式: 一般這種方式常用於棋類遊戲,只在監聽到觸摸後才進行重繪,在無觸摸事件時便閒置下來,對系統資源的需求並不會太高。
- 主動式: 這種方式就好像是在播放動畫一樣,畫布在不停地重繪,在繪製大量物體時對系統資源的需求較大,因此性能低的設備可能因此發生卡頓或丟幀。 一般情況下,2D 遊戲使用 SurfaceView 並配合 Canvas 即可進行快速開發,對於被動式重繪來說這種搭配還是很好的,不僅響應迅速,還會減輕開發難度。
因此對於一般的開發來說,直接使用 Canvas 畫圖就可以滿足需求。 關於 OpenGL 的繪圖方式,將在以後的文章中提到。