爲什麼你可以配置一個精靈的紋理是這樣的:sprite.getTexture().dispose();
你如何/爲什麼可以在另一個班級處理某些東西?
不要你的價值,因爲爪哇(複印件)獲得的質感,不會你只是處理紋理的副本?我在這裏誤解了一些東西。從TextureRegion
和TextureRegion.getTexture()
爲什麼你可以配置一個精靈的紋理是這樣的:sprite.getTexture().dispose();
你如何/爲什麼可以在另一個班級處理某些東西?
不要你的價值,因爲爪哇(複印件)獲得的質感,不會你只是處理紋理的副本?我在這裏誤解了一些東西。從TextureRegion
和TextureRegion.getTexture()
Sprite
繼承來實現,如:
public Texture getTexture() {
return texture;
}
所以,不,你沒有得到一個副本,但到了精靈的紋理參考。打電話給dispose()
你會處理精靈紋理。
您將獲得對java中的對象的引用,而不是值。但在libGDX中爲什麼使用dispose()
及其接口Disposable
還有另一個原因。由libGDX處理的一些資源(紋理就在其中)不必位於JVM的範圍之內。例如,紋理的像素圖可以在堆上或在視頻內存中。您將通過撥打dispose()
來釋放該資源。而且你應該每次不再需要這樣做,以防止泄漏。
在Java中,引用本質上是一個指針。所以它就像一個按值傳遞的指針,指向同一個對象。如果某人明確編寫了該方法以手動實例化一個副本並返回該副本,則只會獲得副本。 – Tenfour04