0

90 フレームのアニメーションがあり、Minecraft の hud に表示したいと考えています。ここに私が今使っているコードがあります:

String CType = "Target";
int CSpeed = 30;
int fast = 0;
public int CenterRoteryCounter = 0;
@ForgeSubscribe
public void CenterRotery(RenderGameOverlayEvent.Post event){
//========Resolution========
res = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
int width = res.getScaledWidth();
int height = res.getScaledHeight();
//========Resolution========+

if(CenterRoteryCounter == 90){CenterRoteryCounter = 0;}

if(CenterRoteryCounter < 10){
this.mc.renderEngine.func_110577_a(new ResourceLocation("CenterRotery/"+CType+"000" + CenterRoteryCounter + ".png"));

}else{if(CenterRoteryCounter < 100){
this.mc.renderEngine.func_110577_a(new ResourceLocation("CenterRotery/"+CType+"00" + CenterRoteryCounter + ".png"));

}else{
this.mc.renderEngine.func_110577_a(new ResourceLocation("CenterRotery/"+CType+"0" + CenterRoteryCounter + ".png"));
}
}

drawTexturedModalRect((width/2)-44, (height/2)-37, 0, 0, 250, 250);
mc.func_110434_K().func_110577_a(Gui.field_110324_m);

if((fast % CSpeed)==0){CenterRoteryCounter++;}fast++;
}

しかし、ご覧のとおり、これは毎秒 ~30 の新しい ResourceLocations を作成しています..!! テクスチャをプリロードして同じ方法で表示するにはどうすればよいですか?

4

1 に答える 1

0

メソッド getResourceLocation(String resourceLocation) で、クラスのプライベートな静的最終 Hashmap を簡単に使用できます。何かのようなもの :

private static ResourceLocation getResourceLocation(String resourceLocation) {
    ResourceLocation myRes = myHashMap.get(resourceLocation);

    if (myRes == null) {
        myRes = new ResourceLocation(resourceLocation);
        myHashMap.put(resourceLocation, myRes);
    }

    return myRes;
}

オンデマンドでリソースをキャッシュします。必要なメモリ量を確認してください。

于 2013-08-28T12:47:39.920 に答える