首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java调用模型列表

问Java调用模型列表
EN

Stack Overflow用户
提问于 2015-07-13 10:16:10
回答 3查看 75关注 0票数 0

在整个java编程方面,我是非常新的,并且为一个相当简单的问题而奋斗。如果你能帮我,我会非常感激的。

在我的引擎中,我想添加一堆游戏对象(.obj文件),但是由于这段代码将相当广泛,所以我想为它创建一个单独的类。

现在,我的问题是,如何编写代码,以便从具有所有游戏对象列表的另一个类调用方法或其他东西?

我的意思是:

在类EngineSetup中,我想在这里调用已压缩的代码。

代码语言:javascript
复制
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中,应该从这里调用所有压缩的代码。

代码语言:javascript
复制
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);   
    }
}

这是我尝试过的一个例子,以及它的结果。我一定是错过了什么?

http://www.pic-upload.de/view-27669317/example.png.html

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-15 08:58:14

谢谢你的帮助,我给一个比我更了解引擎的人发了邮件,他给了我以下的解决方案:

显然,问题是我试图让TileSets扩展游戏类,这对我想做的事情行不通,相反,我应该这样做:

在TileSets中,我必须让类操作游戏,而不是扩展它。

代码语言:javascript
复制
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中,我可以使用这个方法,一切都可以实现:)

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2015-07-13 10:20:02

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

代码语言:javascript
复制
public class EngineSetup extends Game
    {

    TileSets tileSetObj = new TileSets();
    public void Init()
        {
        tileSetObj.TileSet1(); //calls the TileSets TileSet1 method code
       }
    }
票数 0
EN

Stack Overflow用户

发布于 2015-07-13 10:20:09

代码语言:javascript
复制
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();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31380675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档