试用过OGF的朋友,应该会发现GameFrame在鼠标消息处理时,都会搜索当前鼠标坐标下的对象,以实现对像的MouseMove,MouseOver, MouseIn, MouseOut四个事件,但效率非常之差。现打算进行调整,以加快每帧的处理速度,大致方案如下:
1、按FLASH的模式,默认不提供对象的MouseMove, MouseOver, MouseIn, MouseOut事件,GameFrame只负责将MouseMove的消息转发至GameBody,用户要实现要上述4个事件,则必须重载GameBody的OnMouseMove来实现(GameBody可能会提供一个默认的对象分发过程,由用户调用或GameFrame的Setting中带一个标志开发以确定是否分发至对象);
2、在GameLayer层加入一个是否允许处理鼠标消息的标志(默认为false),当为否则不检测,减少FindObject()函数的判断次数;
3、在对象中增加一个是否允许处理鼠标消息的标志(默认为false),减少FindObject()函数中用对象区域判断的次数;
4、在实现上述功能后,在GameFrame中增加一个缓冲表,将所有允许处理鼠标消息的对象加入缓冲表中,减少对不需要鼠标消息的对象的检测;
希望改进后,每秒能处理400帧以上吧!
PS:
另一方面,我们会改进GameObjectText对象,以支持中文输入和显示。机制方面有两种,一种是嵌入字体(预先生成),当字体库没有的话则显示为空;另一种是动态从字模读取再打印至HGE的纹理中。大家可根据自己游戏所需的效率要求作出选择。至于,之前提到的对象编辑器都在启动中,但时间方面暂未定下具体完成时间。