java - static int 对于不同的进程是不一样的

标签 java libgdx desktop-application kryonet

我正在 LibGDX 中开发一个游戏,并且我有一个名为 TILE_ID 的静态 int,每次创建图 block 时都会将其分配给每个图 block ,如下所示:

{loop in Level.class}

Tile t = null;

            switch (material) {
                case HOME: {
                    t = new Home(x, y);
                    break;
                }
                case WALL_IRON:
                case WALL_BRICK: {
                    t = new Tile(x, y, material, type);
                    break;
                }
            }

            if (t != null) {
                if (t instanceof Home) {
                    this.home = t;
                }
                t.tileID = TILE_ID++;
                tileArray.add(t);
            }

{loop-end in Level.class}

所以当我开始一个新游戏时,第一个实例会说:

private final Listener clientListener = new Listener() {
    @Override
    public void connected(Connection connection) {
        PacketEntity p = (PacketEntity) Packet.createPacket(
                PacketEntity.class, Packet.TYPE.CONNECTED);
        p.name = pTank.getName();
        connection.sendTCP(p);

        System.out.println("MAX TILES: " + Level.TILE_ID);
        System.out.println("connected to server!");
    }

输出为:

:desktop:run
new manager
disposed main menu!
Initializing local server...
Client connected! ID# 1
MAX TILES: 76
connected to server!

然后我运行第二个实例,连接到本地主机服务器,输出为:

:desktop:run
new manager
disposed main menu!
A server is already running on localhost. Trying to connect....
MAX TILES: 152
connected to server!

我不明白为什么会发生这种情况。如果我连接第三个客户端等,则最大图 block 始终为 152。

tileid 唯一增加的地方是 Level.class 内部,它对于每个玩家来说都是本地的(不通过网络发送)。

有人可以帮我解决这个问题吗?

最佳答案

在新流程实例中增加它们之前,您应该设置 Level.TILE_ID = 0 - 问题是您正在使用已设置为值的 TILE_ID 启动新流程76 因此新进程正在增加变量设置

    76 + 76 = 152

它始终是152,因为如果您从第二个开始,您就会从第一个客户开始关注新客户

    152 + 76 = 228

等等

关于java - static int 对于不同的进程是不一样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348004/

相关文章:

java - Android Studio - 未找到 JVM 安装

java - 关于 OrthographicCamera 的 libGDX

angular - Electron:从客户端获取文件夹结构

java - 如何为 Array<> 编写序列化器?

Python 跨平台桌面应用程序

java - 根据我的需要,正确的 java 应用程序类型是什么?

java - 为什么下面的代码不起作用?

java - Spring-Data-Jpa - 清空带有外键的表

java - 将几个 Java 循环替换为一个简单的 lambda,但看起来过于复杂

java - libGdx 未正确显示所选像素的颜色