所以我正在尝试加载演员模型,最终这个类会变得非常大。所以我真的不想跟踪将它们全部写入我的实体数组(第40行),是否有更有效的方式来存储我的演员模型。使用索引?
我的代码看起来像这样..
12. public static Entity[] callActors(Loader loader) {
13.
14. //Earth Entity Actor
15. model = OBJLoader.loadObjModel("moon", loader);
16. texture = new ModelTexture(loader.loadTexture("MoonMap1024x1024"));
17. staticModel = new TexturedModel(model,texture);
18. texture = staticModel.getTexture();
19. texture.setShineDamper(10);
20. texture.setReflectivity(0);
21. //Assigned an Entity Actor
22. Entity entity1 = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
23.
...
39.
40. Entity[] entityArray = {entity1,entity2,entity3};
41.
42. return entityArray;
43. }
有没有办法在第22行使用这样的索引
Entity[] entityArray[1] = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
而不是一次性将所有演员都写入实体数组(第40行)?
答案 0 :(得分:1)
您可以声明具有特定大小的Entity类型的数组,并使用索引在其中添加元素。您还可以维护索引变量。
Entity[] arr = new Entity[10];
arr [0]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
OR
Entity[] arr = new Entity[10];
int i=0;
arr [i]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
i++;
arr [i]= new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
i++;
答案 1 :(得分:0)
不确定我是否正确,但如果您想要简单的方法来启动数组,您可以这样做:
Entity[] arr = new Entity[] {entity1, entity2, enttiy3};
如果要设置特定索引,可以使用hashMap
(也可以更快地获取操作),这样做:
HashMap<Integer, Entitiy> Entity = new HashMap<Integer, Entitiy>();
有用的链接:
答案 2 :(得分:0)
有没有办法像这样使用索引 第22行 Entity [] entityArray [1] =新实体(staticModel,new Vector3f(-1.40f,1,-6.0f),0,0,0,1); 而不是一次性将所有演员都写入实体数组(第40行)?
尝试访问一个实体时,无需使用数组符号( [] )。由于entityArray [1]表示一个实体(存储在数组entityArray中的位置1),因此您可以简单地写:
Entity[] entityArray = new Entity[ARRAY_SIZE];
entityArray[1] = new Entity(staticModel, new Vector3f(-1.40f,1,-6.0f),0,0,0,1);
但是,如果您希望在初始化实体后构建数据结构,则可以使用您编写的相同代码。