Java调用模型列表

Java调用模型列表,java,methods,Java,Methods,我对java编程这整件事都很陌生,我很难解决一个相当简单的问题。如果你能帮助我,我将非常感激 在我的引擎中,我想添加一堆游戏对象(.obj文件),但由于这段代码将非常广泛,我想为它创建一个单独的类 现在我的问题是,我必须如何编写代码,以便我可以从另一个包含所有游戏对象列表的类中调用方法或其他东西 我的意思是: 在EngineSetup类中,我想在这里调用生成的代码 public class EngineSetup extends Game { public void Init()

我对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);   
    }
}
下面是一个我尝试过的例子和结果。。我一定是错过了什么


您可以在EngineSetup中创建TileSets对象,并调用您的方法TileSet1()


感谢您的帮助,我给比我更了解发动机的人发了电子邮件,他给了我以下解决方案:

显然,问题是我试图让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中,我可以使用这种方法,一切都会顺利进行:)

无论如何,谢谢你的努力,我希望其他人能找到我的解决方案


最后的结果是:

是的,谢谢,我也是这么想的,但出于某种原因,这对我不起作用-顺便说一下,我正在使用eclipse,但这不重要,对吗?错误是什么?使用eclipse更愿意帮助您减少错误:)在代码上放置一个调试器。你将了解正在发生的事情。
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();
    }
}
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); 
 }
}
public class EngineSetup extends Game
{       
    public void Init()
    {           
// ALL TILES
    TileSets tilesets = new TileSets(this);
    tilesets.Terrain(); 
    }
}