cegui 7 在CEGUI中使用Lua脚本入门

 
cegui 7
在CEGUI中使用Lua脚本入门
CEGUI所使用的脚本是基于Lua5.0.2 和tolua++ 1.06pre2-1的.
界面的编写很大一部分可以通过脚本来实现.我们可以修改脚本而不必重新编译整个程序,
这就为我们省去了好多时间去设计界面.
目前的Lua脚本模块仍然处于初期的开发阶段。它支持绝大多数的内核系统、基层的窗口类,不过,对于某些特殊的控件目前只能通过属性系统(properties system)来设置。
Ok,我们开始吧!你需要有一定的 CEGUI基础,比如初始化、创建窗口等,当然,还要有一定的 Lua基础。
初始化
Lua脚本模块囊括了所有的管理类(manager classes),所以可以通过Lua脚本对CEGUI进行简单的初始化.例如:
#include "CEGUILua.h"
  1. CEGUI::YourRendererOfChoice* renderer = new YourRendererOfChoice;  
  2. CEGUI::LuaScriptModule* script_module = new CEGUI::LuaScriptModule();  
  3.   
  4. // 第二个参数设置xml解析器,0代表默认解析器  
  5. new CEGUI::System( renderer, 0, script_module );  

现在CEGUI::System已经被创建,脚本模块也被指定了。此时,LuaScriptModule的构造函数自动为我们创建了一个lua_State。你也可以传递一个lua_State*LuaScriptModule的构造函数中来使用自己的lua_State
如果你在初始化脚本中用到自定义函数,你就需要这么做。代码如下:

  1. ...  
  2. lua_State* s = your_lua_state;  
  3. CEGUI::LuaScriptModule* script_module = new CEGUI::LuaScriptModule(s);  
  4. ...  

初始化/退出 脚本

CEGUI支持一个配置文件。它的文件名是CEGUI::System的构造函数的一个可选参数。默认为“cegui.config”。

通过设置此配置文件,你可以控制在系统创建和销毁的时候是否执行一个脚本。配置文件的内容类似这样:

  1. <?xml version="1.0" ?>  
  2. <CEGUIConfig  
  3.     InitScript="../datafiles/scripts/init_script.lua"  
  4.     TerminateScript="../datafiles/scripts/exit_script.lua"  
  5. />  
init_script.lua是在系统初始化时候将要被执行的Lua脚本文件。内容可以是这样:
  1. -- 获取CEGUI singletons  
  2. local logger = CEGUI.Logger:getSingleton()  
  3. logger:logEvent( ">>> Init script says hello" )  
  4. --logger:setLoggingLevel( CEGUI.Informative )  
  5.   
  6. -- 为我们要使用的singletons创建相应的局部变量(非必须)  
  7. local system    = CEGUI.System:getSingleton()  
  8. local fontman   = CEGUI.FontManager:getSingleton()  
  9. local schememan = CEGUI.SchemeManager:getSingleton()  
  10.   
  11. -- 载入schemes  
  12. schememan:loadScheme( "../datafiles/schemes/TaharezLook.scheme" )  
  13. schememan:loadScheme( "../datafiles/schemes/WindowsLook.scheme" )  
  14.   
  15. -- 载入默认字体  
  16. local font = fontman:createFont( "../datafiles/fonts/Commonwealth-10.font" )  
  17.   
  18. -- 设置默认鼠标光标  
  19. system:setDefaultMouseCursor( "TaharezLook","MouseArrow" )  
  20.   
  21. logger:logEvent( "<<< Init script says goodbye" )  
并不一定要同时提供初始化和退出脚本,但是,假如你在初始化脚本中申请了全局使用的存储空间,那你就要在退出脚本中释放它(或者在其它合适的地方)。


现在,你学习了怎样用 Lua脚本初始化 CEGUI。后续教程将更深入的讲解。
 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CEGUI(Crazy Eddie’s GUI http://www.cegui.org.uk)是一个自由免费的GUI库,基于LGPL协议,使用C++实现,完全面向对象设计。CEGUI开发者的目的是希望能够让游戏开发人员从繁琐的GUI实现细节抽身出来,以便有更多的开发时间可以放在游戏性上。 CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形库也是可以的,比如OGRE、Irrlicht和RenderWare等,关键需求可以简化为二点: 纹理(Texture)的支持直接写屏(RHW的顶点格式、正交投影、或者使用shader实现) 本书截止日时,CEGUI的最新版本是0.6.0(本书的讨论也是基于此版本),本书光盘提供了SDK和全部源码的下载。 除此之外,CEGUI还同步提供了官方界面编辑器LayoutEditor和ImageSet编辑器,以方便UI和图像集的制作。作为界面编辑器,它需要系统级界面以提供编辑器操作,0.3.0版是基于MFC实现的;而在0.4.0版本以后,改为基于wxWidgets(跨平台的本地UI框架,这里的UI指Window操作系统底层,如:Windows、Unix和Mac,详见http://www.wxwidgets.org)实现。 目前将CEGUI作为游戏界面库开发的游戏已经有好多种,国内的天龙八部,巨人等游戏就是很好的例子。 CEGUI的功能是非常强大的,而且使用也非常的灵活,可以和脚本配合。可以通过配置文件自定义窗口外观。通过布局文件实现窗口布局等等特性,使得游戏的界面开发更加方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值