LIBGDX 没有渲染 class 制作的精灵

LIBGDX not rendering a sprite made by a class

好的。让我们直接深入。 我正在使用 LibGdx 创建一个基本的塔防游戏,但我遇到了一些问题。我有我的屏幕 class,我还有一个基本敌人的 class。这是敌人的class:

private int segment = 1;


Texture img;
public towerBasic(){
    img = new Texture("towerBasic.png");
    setTexture(img);
    setX(10);
    setY(10);
}

public void update(){
    if(segment == 1){
        System.out.println(getY());
        setY(getY()+1);
    }

}

}

它看起来不错(对我来说.. 如果您看到错误请告诉我)。另外 class 的名字是 "towerBasic"。那是我要渲染的精灵 class。这是我试图在其上渲染的屏幕 class (Map1):

private SpriteBatch batch;

public Texture maptex;
public Sprite map;

public towerBasic tower;

MainGame game;

public Map1(MainGame game){
    this.game = game;

}

@Override
public void show() {
    batch = new SpriteBatch();

    maptex = new Texture("map1.png");

    map = new Sprite(maptex);

    tower = new towerBasic();


}

@Override
public void render(float delta) {
    tower.update();
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.begin();
    map.draw(batch);
    tower.draw(batch);


    batch.end();

}

我 运行 发射器,正确的屏幕启动并正确渲染背景图像,除了没有绘制敌人...有什么见解吗?

您应该 创建 基础对象并向其传递 Texture 实例 - 然后您可以将其分配给 Texture 字段(如果需要)。

简而言之 shell 您的 towerBasic class 应该如下所示:

Texture img;

public towerBasic(){
    super(new Texture("towerBasic.png"));

    img = this.getTexture();

    ...