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" ?>
-- 獲取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" )
並不一定要同時提供初始化和退出指令碼,但是,假如你在初始化指令碼中申請了全域性使用的儲存空間,那你就要在退出指令碼中釋放它(或者在其它合適的地方)。
現在,你學習了怎樣用lua指令碼初始化cegui。後續教程將更深入的講解。
Lua指令碼中使用Unicode
如何在lua指令碼中使用unicode是本文要介紹的內容,主要是來學習unicode在lua指令碼中如何使用,具體內容來看本文詳細內容講解。說說最近的幾個事情 1 project採用lua,ui模組肯定是要徹底使用utf 16的,可是lua不支援,怎麼辦?最後好像是寫了userdata,可以將mul...
Redis中使用lua指令碼
公司中的爬蟲專案作為乙個接盤來的專案,專案中大致流程是,把要抓取的資料匯入到redis中,然後不斷pop再去抓取。為了避免redis中的資料丟失,大哥採取的是先pop再將拿到的資料通過set的形式在redis中記錄下來。redis client redis.redis 127.0.0.1 decod...
在C 中使用LUA
lua.lib庫的使用 便於後期使用 便於開發中的標頭檔案引用 便於mfc工程的開發使用 使生成的是庫,而不用生成可執行檔案,便於其他工程的引用 新增頭檔案目錄,庫目錄 新增鏈結器附加依賴項 初始化lua虛擬機器 state lual newstate if state luaopen base s...