如何在CEGUI中使用Lua腳本入門學習
如何在CEGUI中使用Lua腳本入門學習是本文要介紹的內(nèi)容,主要是來學習lua腳本語言在CEGUI如何來使用,不多說,具體內(nèi)容來看本文詳解。
CEGUI所使用的腳本是基于Lua5.0.2 和tolua++ 1.06pre2-1的.
界面的編寫很大一部分可以通過腳本來實現(xiàn).我們可以修改腳本而不必重新編譯整個程序,
這就為我們省去了好多時間去設(shè)計界面.
目前的Lua腳本模塊仍然處于初期的開發(fā)階段。它支持絕大多數(shù)的內(nèi)核系統(tǒng)、基層的窗口類,不過,對于某些特殊的控件目前只能通過屬性系統(tǒng)(properties system)來設(shè)置。
Ok,我們開始吧!你需要有一定的CEGUI基礎(chǔ),比如初始化、創(chuàng)建窗口等,當然,還要有一定的Lua基礎(chǔ)。
初始化
Lua腳本模塊囊括了所有的管理類(manager classes),所以可以通過Lua腳本對CEGUI進行簡單的初始化.例如:
- #include "CEGUILua.h"
- CEGUI::YourRendererOfChoice* renderer = new YourRendererOfChoice;
- CEGUI::LuaScriptModule* script_module = new CEGUI::LuaScriptModule();
- // 第二個參數(shù)設(shè)置xml解析器,0代表默認解析器
- new CEGUI::System( renderer, 0, script_module );
現(xiàn)在CEGUI::System已經(jīng)被創(chuàng)建,腳本模塊也被指定了。此時,LuaScriptModule的構(gòu)造函數(shù)自動為我們創(chuàng)建了一個lua_State。你也可以傳遞一個lua_State*到LuaScriptModule的構(gòu)造函數(shù)中來使用自己的lua_State。
如果你在初始化腳本中用到自定義函數(shù),你就需要這么做。代碼如下:
- ...
- lua_State* s = your_lua_state;
- CEGUI::LuaScriptModule* script_module = new CEGUI::LuaScriptModule(s);
- ...
初始化/退出 腳本
CEGUI支持一個配置文件。它的文件名是CEGUI::System的構(gòu)造函數(shù)的一個可選參數(shù)。默認為“cegui.config”。
通過設(shè)置此配置文件,你可以控制在系統(tǒng)創(chuàng)建和銷毀的時候是否執(zhí)行一個腳本。配置文件的內(nèi)容類似這樣:
- <?xml version="1.0" ?>
- <CEGUIConfig
- InitScript="../datafiles/scripts/init_script.lua"
- TerminateScript="../datafiles/scripts/exit_script.lua"
- />
init_script.lua是在系統(tǒng)初始化時候?qū)⒁粓?zhí)行的Lua腳本文件。內(nèi)容可以是這樣:
獲取CEGUI singletons
- local logger = CEGUI.Logger:getSingleton()
- logger:logEvent( ">>> Init script says hello" )
- --logger:setLoggingLevel( CEGUI.Informative )
為我們要使用的singletons創(chuàng)建相應(yīng)的局部變量(非必須)
- local system = CEGUI.System:getSingleton()
- local fontman = CEGUI.FontManager:getSingleton()
- local schememan = CEGUI.SchemeManager:getSingleton()
載入schemes
- schememan:loadScheme( "../datafiles/schemes/TaharezLook.scheme" )
- schememan:loadScheme( "../datafiles/schemes/WindowsLook.scheme" )
載入默認字體
- local font = fontman:createFont( "../datafiles/fonts/Commonwealth-10.font" )
設(shè)置默認鼠標光標
- system:setDefaultMouseCursor( "TaharezLook","MouseArrow" )
- logger:logEvent( "<<< Init script says goodbye" )
并不一定要同時提供初始化和退出腳本,但是,假如你在初始化腳本中申請了全局使用的存儲空間,那你就要在退出腳本中釋放它(或者在其它合適的地方)。
小結(jié):如何在CEGUI中使用Lua腳本入門學習的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!