0
標題不是很清楚,但我不知道如何制定它。所以隨時提出一個新的標題。每個對象應該處理自己的渲染,還是應該由一個獨立的類來處理所有的渲染?
我目前正在使用Slick2D庫在Java中進行遊戲。首先,我正在處理主類的render()
函數中的所有渲染。但即使只有一些物體,我發現這變得非常混亂。
短採樣,雖然原代碼有一點渲染:
g.setBackground(Color.darkGray);
g.setColor(Color.black);
g.fillRect(0, 0, gc.getScreenWidth(), 128); //draw top UI
g.fillRect(0, 128, gc.getScreenWidth(), 512, sky, 8, 512); //draw background
g.fillRect(0, 720 - 128, gc.getScreenWidth(), 128, ground, 128, 128); //draw ground
g.drawImage(charSprite, charX, charY); //draw character
g.drawImage(weaponSprite, weaponX, weaponY); //draw weapon
for (firedArrows arrow : Arrow) {
g.drawImage(arrowSprite, arrow.getPosX(), arrow.getPosY) //draw all arrows
}
所以,我現在已經切換成每個對象渲染本身。 在主要的render()
函數中,我將調用方法level
,它依次渲染關卡中的對象並調用render()
函數。
Main.render()=> level.render()=>渲染水平
=> character.render() => render character => weapon.render() => render weapon => monsters.render() => render monsters
等等等等。
這兩種方法哪一種更好,爲什麼? 或者可能有第三種方法是首選?
一般來說,OOP會指向第二種形式,因爲每個類都應該處理它的責任。但是也許你的例子非常簡單,它並不是真的需要。需要注意的是,不要將模型類與UI實現混合使用,因此您可以輕鬆更改UI而無需觸摸模型。 – SJuan76
目前,它很簡單。但我一定會擴大比賽。也許添加粒子生成器,以及什麼。 用戶界面未來也會在GUI類中處理。 謝謝你的迴應! –
我會說兩個。每個對象都應該負責自己的繪畫,但是它應該只在中央重繪引擎指示的情況下這樣做,這樣可以防止對象在自己的序列中繪製或更新遊戲數據 – MadProgrammer