<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          dmluaC++ & lua 自動(dòng)化引擎

          聯(lián)合創(chuàng)作 · 2023-09-28 11:51

          dmlua是一個(gè)集合tolua(修改了部分源碼) 使用lua5.3版本的 C++ & lua 自動(dòng)化引擎.

          1. project tolua 是 tolua,lua的庫(kù) 使用的是lua 5.3版本
          2. project tolua++ 是tolua的工具源碼 通過(guò).pkg文件生成源碼文件
          3. project dmluatest 是使用tolua+dmlua的例子
          4. project dmlua 因?yàn)槎际穷^文件 所以沒(méi)有project 是針對(duì)tolua使用的封裝 他會(huì)自動(dòng)搜索 當(dāng)前執(zhí)行程序目錄上一級(jí) 所有的.lua文件(比如程序在 /home/user/debug/dmluatest.exe 那么他會(huì)搜索/home/user/目錄 有需求可以自己修改__GetScriptPath)

          注意:
          1. interface.pkg 里面 $#include "dmlua_typeid.h" 需要存在.
          2. 需要在腳本里面new或者gc的struct或class 需要把構(gòu)造和析構(gòu)都顯式的導(dǎo)出
          3. 如何導(dǎo)出一個(gè)類的部分接口

          class sample {// tolua_export
          public:
          // tolua_begin
              int GetID(){ return 0;}
          };
          // tolua_end

          4. 如何調(diào)用接口

          CDMLuaEngine oDMLuaEngine;
          if (!oDMLuaEngine.ReloadScript()){    return;}
          
          CRole *poRole = CRoleMgr::Instance()->CreateRole();
          poRole->SetName("andy");poRole->SetHp(1);poRole->SetMp(1);
          unsigned int dwTaskID = 100;
          LResultINT oResult(-1);
          // script.task.task.AcceptTask// script 目錄// task 目錄// task 腳本名// AcceptTask 函數(shù)名
          // 注意事項(xiàng)
          // 對(duì)象需要傳遞指針類型, 如果直接使用對(duì)象 會(huì)產(chǎn)生copy
          // 只有傳遞指針類型的對(duì)象 才能返回出來(lái).
          // 例如 
          oDMLuaEngine.Call("script.task.task.AcceptTask", poRole, dwTaskID, &oResult); //oResult可以返回出來(lái)
          oDMLuaEngine.Call("script.task.task.AcceptTask", poRole, dwTaskID, oResult); //oResult無(wú)法返回出來(lái)

          5. 性能 常規(guī)配置下 C++ call lua接口 性能大約是 200萬(wàn)/秒, 經(jīng)過(guò)測(cè)試發(fā)現(xiàn)瓶頸全部在lua提供的api上面. 說(shuō)明難以再優(yōu)化了. 如果還有性能需求 可以試試luajit等.

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  翔田千里精品视频 | 成人网址大全 | 大香蕉久久伊 | 欧美中文字幕在线播放 | 色射爱|