问题描述
我正在尝试使用getch从用户那里获得角色。但是,它返回2个相同的字符。
Quaternion lookRotation = Quaternion.LookRotation(targetRb.veLocity);
lookRotation.z = 0;
lookRotation.x = 0;
camera.transform.rotation = Quaternion.Lerp(camera.transform.rotation,lookRotation,0.4f);
有人知道这个解决方法吗?
解决方法
在终端中键入字符时,它会回显。您看到的是回显的字符和printw()
的结果。
在使用ncurses时,可以通过调用函数noecho()
来轻松禁用回显。
常见做法是定义自己的函数来初始化诅咒,例如:
void init_curses()
if (!initscr()) {
exit(1);
}
noecho();
}
,
您将获得两个字符,因为最初输入处于缓冲模式。第二个字符是换行符。
请参阅manual page,它表示
要一次输入字符而不回显(大多数交互式, 面向屏幕的程序需要此),应遵循以下顺序 用过的:
initscr(); cbreak(); noecho();
您的示例可能是这样的:
#include <ncurses.h>
int main()
{
initscr();
cbreak(); // puts the terminal into unbuffered mode
int input = getch();
printw("%c",input);
getch(); // actually needed for a different reason...
endwin();
}
cbreak的手册页进行了说明
通常,tty驱动程序会缓冲输入的字符,直到换行符或 输入回车符。
cbreak
例程禁用行缓冲 和擦除/杀死字符处理(中断和流控制字符不受影响),使用户立即键入字符 该程序可用。nocbreak
例程将终端返回到 正常(煮熟)模式。