我正在为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);
}
}
结果如下:
如何制作它以便在彼此之下显示所有选项而不是彼此相邻:
Option 1
Option 2
Option 3
etc..
答案 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);