在整个java编程方面,我是非常新的,并且为一个相当简单的问题而奋斗。如果你能帮我,我会非常感激的。
在我的引擎中,我想添加一堆游戏对象(.obj文件),但是由于这段代码将相当广泛,所以我想为它创建一个单独的类。
现在,我的问题是,如何编写代码,以便从具有所有游戏对象列表的另一个类调用方法或其他东西?
我的意思是:
在类EngineSetup中,我想在这里调用已压缩的代码。
public class EngineSetup extends Game
{
public void Init()
{
Call the method public void TileSet1() in class 2 but how?
//GameObject Tile0 = new GameObject();
//Mesh mesh = new Mesh("Tile1.obj");
//Material material = new Material
//(new Texture("GrassUV.png"), 1, 8);
//MeshRenderer meshRenderer = new MeshRenderer(mesh, material);
//Tile0.AddComponent(meshRenderer);
//Tile0.GetTransform().GetPos().Set(0, 0, 0);
//AddObject(Tile0);
//GameObject Tile1 = new GameObject();
//meshRenderer = new MeshRenderer(mesh, material);
//Tile1.AddComponent(meshRenderer);
//Tile1.GetTransform().GetPos().Set(10, 0, 0);
//AddObject(Tile1);
}
}在类TileSets中,应该从这里调用所有压缩的代码。
public class TileSets extends Game
{
public void TileSet1()
{
GameObject Tile0 = new GameObject();
Mesh mesh = new Mesh("Tile1.obj");
Material material = new Material
(new Texture("GrassUV.png"), 1, 8);
MeshRenderer meshRenderer = new MeshRenderer(mesh, material);
Tile0.AddComponent(meshRenderer);
Tile0.GetTransform().GetPos().Set(0, 0, 0);
AddObject(Tile0);
GameObject Tile1 = new GameObject();
meshRenderer = new MeshRenderer(mesh, material);
Tile1.AddComponent(meshRenderer);
Tile1.GetTransform().GetPos().Set(10, 0, 0);
AddObject(Tile1);
}
}这是我尝试过的一个例子,以及它的结果。我一定是错过了什么?
发布于 2015-07-15 08:58:14
谢谢你的帮助,我给一个比我更了解引擎的人发了邮件,他给了我以下的解决方案:
显然,问题是我试图让TileSets扩展游戏类,这对我想做的事情行不通,相反,我应该这样做:
在TileSets中,我必须让类操作游戏,而不是扩展它。
public class TileSets
{
private Game game;
public TileSets(Game game)
{
this.game = game;
}
public void Terrain()
{
GameObject Tile0 = new GameObject();
Mesh mesh = new Mesh("Tile1.obj");
Material material = new Material
(new Texture("GrassUV.png"), 1, 8);
MeshRenderer meshRenderer = new MeshRenderer(mesh, material);
Tile0.AddComponent(meshRenderer);
Tile0.GetTransform().GetPos().Set(0, 0, 0);
game.AddObject(Tile0);
}
}在EngineSetup中,我可以使用这个方法,一切都可以实现:)
public class EngineSetup extends Game
{
public void Init()
{
// ALL TILES
TileSets tilesets = new TileSets(this);
tilesets.Terrain();
}
}无论如何,谢谢你的努力,我希望其他人能找到我的解决方案。
最后的结果是:http://www.pic-upload.de/view-27690147/ExTerrain.png.html
发布于 2015-07-13 10:20:02
您可以在TileSets中创建EngineSetup对象&调用方法TileSet1()
public class EngineSetup extends Game
{
TileSets tileSetObj = new TileSets();
public void Init()
{
tileSetObj.TileSet1(); //calls the TileSets TileSet1 method code
}
}发布于 2015-07-13 10:20:09
public class EngineSetup extends Game {
//Create tilesets object of type TileSets
TileSets tilesets = new TileSets();
public void Init() {
// Call the method TileSet1() here.
tilesets.TileSet1();
}
}https://stackoverflow.com/questions/31380675
复制相似问题