解决UI拦截游戏输入

以前做项目的时候,因为没有经验,发现UI焦点和游戏控制总是发生冲突.只是当时没有考虑到这一点.

现在做这个项目,有经验的大哥首先就能想到这一点并且说应该怎么做.呵呵,有经验的确实不一样啊.

现在实现GB里面的UI拦截,我的实现方法是给NiInputDI8Keyboard和NiInputDI8Mouse加入CallBackObject,这样就可以把键盘事件注入CEGUI.
同时可以加上事件拦截,通过回调返回值,确定这个输入事件是否被记录,如果UI处理了事件,那么这个将不被记录,最后结果当然是得不到这个消息了.可能会有潜在的问题.
不过这个地方的拦截可以去掉,然后UI系统有一个标志,供外部判断是否要继续处理输入.这样子可能会比较好点,因为不会有消息根本没有产生,需要特殊处理输入的照样可以检测到输入.

你可能感兴趣的:(UI)