如何在CEGUI中使用Lua指令碼入門學習是本文要介紹的內容,主要是來學習lua指令碼語言在CEGUI如何來使用,不多說,具體內容來看本文詳解。
CEGUI所使用的指令碼是基於Lua5.0.2 和tolua++ 1.06pre2-1的.
介面的編寫很大一部分可以通過指令碼來實現.我們可以修改指令碼而不必重新編譯整個程式,
這就為我們省去了好多時間去設計介面.
目前的Lua指令碼模組仍然處於初期的開發階段。它支援絕大多數的核心系統、基層的視窗類別,不過,對於某些特殊的控制項目前只能通過屬性系統(properties system)來設定。
Ok,我們開始吧!你需要有一定的CEGUI基礎,比如初始化、建立視窗等,當然,還要有一定的Lua基礎。
初始化
Lua指令碼模組囊括了所有的管理類(manager classes),所以可以通過Lua指令碼對CEGUI進行簡單的初始化.例如:
- #include "CEGUILua.h"
- CEGUI::YourRendererOfChoice* renderer = new YourRendererOfChoice;
- CEGUI::LuaScriptModule* script_module = new CEGUI::LuaScriptModule();
-
- // 第二個參數設定xml解析器,0代表預設解析器
- new CEGUI::System( renderer, 0, script_module );
現在CEGUI::System已經被建立,指令碼模組也被指定了。此時,LuaScriptModule的建構函式自動為我們建立了一個lua_State。你也可以傳遞一個lua_State*到LuaScriptModule的建構函式中來使用自己的lua_State。
如果你在初始化指令碼中用到自訂函數,你就需要這麼做。代碼如下:
- ...
- lua_State* s = your_lua_state;
- CEGUI::LuaScriptModule* script_module = new CEGUI::LuaScriptModule(s);
- ...
初始化/退出 指令碼
CEGUI支援一個設定檔。它的檔案名稱是CEGUI::System的建構函式的一個選擇性參數。預設為“cegui.config”。
通過設定此設定檔,你可以控制在系統建立和銷毀的時候是否執行一個指令碼。設定檔的內容類別似這樣:
- <?xml version="1.0" ?>
- <CEGUIConfig
- InitScript="../datafiles/scripts/init_script.lua"
- TerminateScript="../datafiles/scripts/exit_script.lua"
- />
init_script.lua是在系統初始化時候將要被執行的Lua指令碼檔案。內容可以是這樣:
擷取CEGUI singletons
- local logger = CEGUI.Logger:getSingleton()
- logger:logEvent( ">>> Init script says hello" )
- --logger:setLoggingLevel( CEGUI.Informative )
為我們要使用的singletons建立相應的局部變數非必須)
- 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" )
設定預設滑鼠游標
- system:setDefaultMouseCursor( "TaharezLook","MouseArrow" )
-
- logger:logEvent( "<<< Init script says goodbye" )
並不一定要同時提供初始化和退出指令碼,但是,假如你在初始化指令碼中申請了全域使用的儲存空間,那你就要在退出指令碼中釋放它或者在其它合適的地方)。
小結:如何在CEGUI中使用Lua指令碼入門學習的內容介紹完了,希望通過本文的學習能對你有所協助!