基于可变条件指定纹理的最有效代码方式?

问题描述 投票:0回答:1

我目前正在使用自己的引擎来编写游戏。但是,有一个问题,我不确定如何以最有效的代码方式解决它:对于游戏中的许多对象,我需要根据各种条件/状态分配不同的纹理(我为此使用枚举)。一个例子:

玩家需要根据他所看的方向,走路或等待的状态,健康状况等来更改其纹理。>

一个解决方案是像这样嵌套嵌套的语句:

switch (getState ()) {
        case IDLE:
            switch (getDirection()) {
                case UP:
                    setTexture(Textures.PLAYER_IDLE_UP);
                    break;
                case RIGHT:
                    setTexture(Textures.PLAYER_IDLE_RIGHT);
                    break;
                case DOWN:
                    setTexture(Textures.PLAYER_IDLE_DOWN));
                    break;
                case LEFT:
                    setTexture(Textures.PLAYER_IDLE_LEFT);
                    break;
            }
            break;
        case WALKING:
            switch (getDirection()) {
                case UP:
                    setTexture(Textures.PLAYER_WALKING_UP);
                    break;
                case RIGHT:
                    setTexture(Textures.PLAYER_WALKING_RIGHT);
                    break;
                case DOWN:
                    setTexture(Textures.PLAYER_WALKING_DOWN);
                    break;
                case LEFT:
                    setTexture(Textures.PLAYER_WALKING_LEFT);
                    break;
            }
            break;
        case RUNNING:
            ...
    }

但是,对于每种情况,这将变得越来越复杂,如果存在其他一组状态,我将不得不重写它(例如,我将实现一个僵尸,而他无法运行,或者会具有其他属性,等等。)。

[我还想到了给我所有的纹理标签,并编写一个算法来尝试找到匹配的纹理,但是具有越来越多的纹理/条件,并且所有这些都经常执行,我认为这种方法会非常慢。

我真的不知道该怎么办,或者我是否缺少解决此类问题并且代码高效且高效的数据结构。

我目前正在使用自己的引擎来编写游戏。但是,有一个问题,我不确定如何以最有效的代码方式解决它:对于游戏中的很多对象,我需要分配...

java performance game-development coding-efficiency
1个回答
0
投票

我不确定是否会使其效率更高,但是对于将来的更改,它肯定会使其更强大:我在想类似查找表的东西。这可能是多维数组,甚至可能是您自己的数据结构。

© www.soinside.com 2019 - 2024. All rights reserved.