为什么你可以处理这样的精灵纹理:sprite.getTexture().dispose();
由于java,你不是按值(副本)得到纹理,你不会只是处理纹理的副本吗?我在这里误解了一些东西。
答案 0 :(得分:4)
Sprite
继承自TextureRegion
,而TextureRegion.getTexture()
的实施方式如下:
public Texture getTexture () {
return texture;
}
所以不,你没有得到副本,而是对精灵纹理的引用。通过调用dispose()
,您将处理精灵纹理。
答案 1 :(得分:0)
您将获得对java中对象的引用,而不是值。但是在libGDX中使用dispose()
及其接口Disposable
还有另一个原因。 libGDX处理的一些资源(其中包含纹理)不必位于JVM的范围内。例如,纹理的像素图可以在堆上或在视频存储器中。您将通过调用dispose()
来释放该资源。每当你不再需要Disposable
资源时,你应该这样做,以防止泄漏。