我現在正在關注YouTube上的一系列視頻教程,具體爲TheChernoProject的遊戲編程教程。我到了第36集,這是關於從瓦片渲染一個關卡。我不會在這方面做太多的細節,但是我遇到了一個奇怪的問題,就是沒有人遇到過(至少沒有人要求幫助)。
更確切地說:我有一個Sprite類,一個Tile類(有兩個類擴展它:GrassTile和VoidTile)和一個Level類。由精靈組成的Tiles的等級科學家。你可以在這裏看到瓷磚:不正確的精靈圖形分配給瓷磚
public static Tile grass = new GrassTile(Sprite.grass);
public static Tile voidTile = new VoidTile(Sprite.voidSprite);
而且精靈創建這樣的:
public static Sprite grass = new Sprite(16, 0, 0, Spritesheet.tileset);
public static Sprite voidSprite = new Sprite(16, 0x00AAFF);
兩個構造精靈:這些都是
(int size, int x, int y, Spritesheet sheet)
(int size, int colour)
和電平是隨機與生成字段範圍從0到3(0是草地,其餘的只是VoidTile),但它顯示圖形的方式有些錯誤,我確實使用了printlns來檢查它,我相信它的大部分工作正常做一個根據ID確定正確的Tiles)。您可以在那裏看到:
ID: 0 | Tile: [email protected] | Sprite: [email protected]
ID: 2 | Tile: [email protected] | Sprite: [email protected]
ID: 3 | Tile: [email protected] | Sprite: [email protected]
ID: 1 | Tile: [email protected] | Sprite: [email protected]
而且你可能會注意到,該雪碧是相同的,即使當我創建草和voidTile類,它們都分配有不同的精靈。奇怪的部分是分配的精靈取決於我創建它們的順序。現在所有的瓷磚都有一個voidSprite圖形,因爲我最後創建了VoidTile。當我交換它們(使GrassTile最後)時,它們都有草精靈。我嘗試了所有我能想到的工作,但事實並非如此。我已經上傳了項目文件夾,所以你可以導入它並檢查代碼,也許我錯過了一些東西。
項目網址:https://dl.dropboxusercontent.com/u/18909657/TheGame.rar
這可能是一個更好的問題http://gamedev.stackexchange.com – ninesided
你需要做一些更多的調試,至少隔離有問題的代碼,然後發佈它。這裏沒有人會通過一個大規模的rar文件。投票結束。請檢查以確保您沒有不當地使用靜態,您正在循環中創建新的Sprite對象。 –