C ++ - 在循环中彼此之间的文本

时间:2018-02-02 02:05:58

标签: c++ menu game-engine

我正在为GTAV开发游戏修改,但是我被卡住了。我想使用循环在屏幕上显示选项,我有点工作,但它没有正确显示。

这是我用来显示文本的代码:

void DRAW_TEXT(char* text, float x, float y, float s_x, float s_y, int font, bool outline, bool Shadow, bool center, bool RightJustify, int r, int g, int b, int a){
    UI::SET_TEXT_COLOUR(r, g, b, a);
    UI::SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0);
    if (outline) UI::SET_TEXT_OUTLINE();
    UI::SET_TEXT_FONT(font);
    UI::SET_TEXT_CENTRE(center);
    UI::SET_TEXT_RIGHT_JUSTIFY(RightJustify);
    UI::SET_TEXT_SCALE(s_x, s_y);
    UI::BEGIN_TEXT_COMMAND_DISPLAY_TEXT(STRING);
    UI::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
    UI::END_TEXT_COMMAND_DISPLAY_TEXT(x, y);
}

然后我像这样循环:

for (int i = 0; i < optionCount; i++) {
    if (i == selectedIndex) {
        DRAW_TEXT(MenuOptions[i], 0.169 + (0.230 * (i / 3)), 0.228 + (0.040 * (i / 3)), 0.35, 0.35, 0, false, false, false, false, 0, 0, 0, 255);
    } else {
        DRAW_TEXT(MenuOptions[i], 0.169 + (0.230 * (i / 3)), 0.228 + (0.040 * (i / 3)), 0.35, 0.35, 0, false, false, false, false, 255, 255, 255, 255);
    }
}

结果如下:

enter image description here

如何制作它以便在彼此之下显示所有选项而不是彼此相邻:

Option 1
Option 2
Option 3
etc..

1 个答案:

答案 0 :(得分:1)

在您的代码中,您使用i / 3表达式,除非您将i转换为浮点类型,否则它不会按预期工作。你需要使用这样的东西:

DRAW_TEXT(MenuOptions[i], 0.169 + (0.230 * ((double)i / 3)), 0.228 + (0.040 * ((double)i / 3)), 0.35, 0.35, 0, false, false, false, false, 0, 0, 0, 255);