Assets{
static Assets instance;
AssetGamePlay play;
class AssetGamePlay{
AtlasRegion block2;
-----code-----
}
}
这是我班级的简化外观。
我正在通过Assets.instance.play.block2
我在一秒钟内(渲染函数)大约40-60次调用许多这样的变量。
所以我的问题是(Android游戏):
答案 0 :(得分:0)
你不应该这样做,而是使用AssetManager
代替,它已经以这种方式提供访问权限,但也提供更多功能。
我通常这样做:
public class YourGame {
public static AssetManager assets = new AssetManager();
// load all necessary assets via the manager in advance
// use the manager like this anywhere in your code:
YourGame.assets.get("block2", Texture.class);
}
答案 1 :(得分:0)
我没有看到在Assets中创建内部类的重点。你为什么不直接这样做,所以:
Assets.instance.play.block2;
成为这个:
Assets.instance.block2;
如果资产除以逻辑用途(播放,菜单等),则使用方法加载/卸载它们(使用Assetmanager等noone suggests)。
此外,如果您使用的是单例,您可能希望拥有一个获取实例的方法,如果它不存在,则创建它。
public static Assets getInstance(){
if(instance==null) instance = new Assets();
return instance;
}
所以你可以像这样使用它:
Assets.getInstance().block2;
无需担心静态实例因任何原因而丢失。
最后:
这是一种非常昂贵的方法吗?
Nop ,事实并非如此。我一直这样处理它。
答案 2 :(得分:-2)
如果这是Java,则outers类(Assets
)只能访问内部(AssetGamePlay
)的静态成员。
但是如果你有一个实例,并且内部的属性是公共的,你可以做一个getter方法,如:
Assets{
static Assets instance;
AssetGamePlay play;
class AssetGamePlay{
AtlasRegion block2;
//-----code-----
public AtlasRegion getBlock2(){
return Assets.instance.play.block2;
}
}