使用cocos2d x的console實現遠端除錯

2021-09-11 10:00:36 字數 3075 閱讀 2413

使用lua開發有乙個很爽的地方就是可以從控制台實時輸入lua指令來進行除錯,但是之前該方法僅在windows下有效,之前也介紹過,見這裡。研究了下發現cocos2d-x是有乙個console類來支援遠端除錯的,哈哈,從此真機除錯也可以很方便了。

這裡先介紹下console的關鍵api先:

listenontcp(number) 這裡引數是監聽的埠號

addcommand(tb, funciton) 這裡第乙個引數是乙個表,內容如下:,第二個引數就是執行的函式了,傳入引數為(控制代碼,字串引數)

在這裡我將其封裝到了cocos-lua裡,函式如下:

function gamemgr:enablelistenontcp(port_number)

returncc.director:getinstance():getconsole():listenontcp(port_number)

end

function gamemgr:addconsolecommand(name, help, call_back)

returncc.director:getinstance():getconsole():addcommand(, call_back)

end

建立監聽過程如下:

1. 程式初始化時,呼叫api監聽指定埠號,這裡我們假設用埠號1234

function gamemgr:_init()

...

self:enablelistenontcp(1234)

...

end

2. 建立自己的lua指令,這裡我們只需要能接收我們輸入的lua指令並執行就好。(cocos-lua的框架已整合)

function insertconsolecmd(cmd_string)

wait_execute_cmd_string = cmd_string

end

function gamemgr:init()

...

local function executecmd(handler, cmd_string)

insertconsolecmd(cmd_string)

end

self:addconsolecommand("lua","execute a lua command string.", executecmd)

...

end

3. 在遊戲主迴圈中查詢並執行指令

local function executecmdstring(cmd_string)

ifcmd_string then

local cmd_func = loadstring(cmd_string)

ifcmd_func then

xpcall(cmd_func, __g__trackback__)

else

cclog("invalid cmd! %s", cmd_string)

end

end

end

local function mainloop(delta)

...

ifwait_execute_cmd_string then

executecmdstring(wait_execute_cmd_string)

wait_execute_cmd_string = nil

end

...

end

nc 裝置ip位址 埠號

連線成功後,可以輸入help,看到可用的指令,如fps on/off, debugmsg on/off等等,這裡我們先開啟控制台輸出

debugmsg on

輸入剛才我們建立的指令:

lua print("hello world")

命令台上會出現「hello world」。

哈哈,大功告成,以後真機除錯更方便啦~~^_^

ps:以上功能均已整合到了cocos-lua中,只要初始化時監聽自定義的埠就ok啦~~

參考文章:

cocos2d x 使用UIWebView載入網頁

前段時間專案中要微博授權登陸,使用的是web登陸方式。所以要在cocos2d x中顯示網頁。所以就將uiwebview用進來了。實現 fmuiwebviewbridge.h import import import import fmlayerwebview.h inte ce fmuiwebvie...

cocos2d x 使用UIWebView載入網頁

前段時間專案中要微博授權登陸,使用的是web登陸方式。所以要在cocos2d x中顯示網頁。所以就將uiwebview用進來了。實現 fmuiwebviewbridge.h import import import import fmlayerwebview.h inte ce fmuiwebvie...

cocos2d x中精靈的使用

精靈是2d遊戲中得主角,這次就總結一下cocos2d x中精靈的使用。一,載入 首先,建立乙個變數 ccsprite psprite 載入函式分為兩組initwith x和spritewith x,其主要的區別是使用initwith x的手工作業,而spritewith x是純自動化作業。在spri...