青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

Nebula3學習筆記(7): 腳本系統

Posted on 2008-12-14 21:33 Condor 閱讀(1572) 評論(0)  編輯 收藏 引用

可能是還在開發當中的緣故, 我感覺Nebula3中的lua腳本系統不是很完善. 所有的調用都是封裝成Command來執行的, 并不像LuaBind那樣直接綁定到C++類對象; 而且, 對于C++調用腳本的接口也不是很方便, 只有一個Eval()來執行一個字符串. 如果要實際進行應用的話, 我想最好是自己擴展一下, 這里有一篇不錯的文章: Integrating Lua into C++. 當然, 對于需求更高的用戶來說, 可以選擇使用LuaBind等第三方庫來整合腳本系統.

Command(命令)
可以這么說, 腳本中調用的, 都是一個個的Command. 一個新的Command定義了一個腳本語言獨立的新的腳本命令, 你可以通過派生一個Command的子類并注冊到腳本服務器來實現. 也就是說, 新的命令不依賴于你具體使用的腳本系統, 可以是lua, 也可以是python等等.

view plaincopy to clipboardprint?

  1. class Print : public Scripting::Command   
  2. {   
  3.     DeclareClass(Print);   
  4. public:   
  5. virtual void OnRegister();   
  6. virtual bool OnExecute();   
  7. virtual Util::String GetHelp() const;   
  8. private:   
  9. void Callback(const Util::String& str);   
  10. };<PRE></PRE> 
class Print : public Scripting::Command
{
    DeclareClass(Print);
public:
    virtual void OnRegister();
    virtual bool OnExecute();
    virtual Util::String GetHelp() const;
private:
    void Callback(const Util::String& str);
};

ScriptServer(腳本服務器)
ScriptServer是語言無雙的, 也就是說你可以自己派生一個相應語言的子來來支持一種腳本言. Nebula3里已經實現了一個LuaServer, 不過個感覺沒有LuaBind方便. 所有的腳本執行都是通過LuaServer::Eval(const String& str)來完成的. 腳本要調用C++代碼的話, 需要封裝一個Command, 然后用LuaServer::RegisterCommand()來注冊就可以用了. 具體可以參考Command命名空間里的相關代碼.

view plaincopy to clipboardprint?

  1. scriptServer->RegisterCommand("print", Print::Create());<PRE></PRE> 
    scriptServer->RegisterCommand("print", Print::Create());

應用實例
其實App::ConsoleApplication里就有LuaServer, 并且已經注冊了一些IO命名. 我們派生一個從命令行讀取腳本命令執行的來做測試:

view plaincopy to clipboardprint?

  1. class ScripTestApp : public App::ConsoleApplication   
  2. {   
  3. public:   
  4. ScripTestApp(void);   
  5. /// open the application
  6. virtual bool Open();   
  7. /// run the application, return when user wants to exit
  8. virtual void Run();   
  9. };   
  10. ScripTestApp::ScripTestApp(void)   
  11. {   
  12. }   
  13. bool ScripTestApp::Open()   
  14. {   
  15. if (ConsoleApplication::Open())   
  16. {   
  17. return true;   
  18. }   
  19. return false;   
  20. }   
  21. void ScripTestApp::Run()   
  22. {   
  23. Util::String input;   
  24. while (true)   
  25. {   
  26.   input = IO::Console::Instance()->GetInput();   
  27. if (!input.IsEmpty())   
  28.   {   
  29. this->scriptServer->Eval(input);   
  30.   }   
  31. }   
  32. }<PRE></PRE> 
class ScripTestApp : public App::ConsoleApplication
{
public:
 ScripTestApp(void);

 /// open the application
 virtual bool Open();
 /// run the application, return when user wants to exit
 virtual void Run();
};

 ScripTestApp::ScripTestApp(void)
{
}

bool ScripTestApp::Open()
{
 if (ConsoleApplication::Open())
 {
  return true;
 }
 return false;
}

void ScripTestApp::Run()
{
 Util::String input;
 while (true)
 {
  input = IO::Console::Instance()->GetInput();
  if (!input.IsEmpty())
  {
   this->scriptServer->Eval(input);
  }
 }
}

運行結果:


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品亚洲一区二区三区浴池| 激情偷拍久久| 亚洲综合导航| 欧美精品激情在线| 亚洲欧美日韩国产一区| 亚洲黄色三级| 亚洲香蕉视频| 亚洲精品欧美精品| 亚洲午夜在线观看| 久久久久久欧美| 欧美日韩性生活视频| 亚洲黑丝在线| 欧美成人免费小视频| 久久av一区| 国内在线观看一区二区三区| 午夜欧美精品| 亚洲一区二区三区四区视频| 欧美日韩亚洲视频| 亚洲精品综合精品自拍| 欧美性猛交xxxx乱大交退制版| 免费观看久久久4p| 欧美日韩色一区| 欧美a级一区二区| 欧美大尺度在线| 欧美日韩精品一区二区三区| 欧美日韩一区成人| 国产精品欧美精品| 国内久久婷婷综合| 一区二区日韩| 亚洲伦理在线| 亚洲女同同性videoxma| 欧美一级播放| 久久久噜噜噜久久| 欧美高清在线播放| 91久久久精品| 久久国产精品99久久久久久老狼| 久久久精彩视频| 欧美性做爰猛烈叫床潮| 亚洲国产欧美在线| 午夜亚洲视频| 亚洲激情国产精品| 欧美福利电影网| 亚洲一区二区三区激情| 久久久国产精品一区| 国产日韩精品视频一区二区三区| 在线观看久久av| 久久成人这里只有精品| 免费成人av资源网| 欧美不卡一卡二卡免费版| 亚洲一区二区视频在线| 女生裸体视频一区二区三区| 黄色av成人| 久久久久久久尹人综合网亚洲| 99国内精品| 欧美日韩日本网| 亚洲精品在线看| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲一区二区三区四区视频| 国产精品久久久久aaaa| 亚洲欧美美女| 亚洲无毛电影| 国产欧美日本| 久久久久久久综合日本| 欧美在线观看一区| 影音先锋日韩精品| 亚洲大胆在线| 欧美日韩国产bt| 亚洲视频在线视频| 在线一区欧美| 国产日韩亚洲欧美综合| 欧美专区在线| 久久精品三级| 日韩亚洲国产精品| 亚洲五月六月| 激情婷婷欧美| 亚洲国产成人精品视频| 欧美视频在线观看 亚洲欧| 午夜精品福利一区二区三区av| 亚洲一区三区视频在线观看| 国产在线一区二区三区四区 | 国产精品久久午夜| 小嫩嫩精品导航| 久久av资源网| 亚洲精品日韩精品| 亚洲深夜激情| 在线免费观看一区二区三区| 日韩亚洲国产精品| 国内视频精品| 亚洲人成亚洲人成在线观看图片| 欧美午夜影院| 久久久精品网| 亚洲欧美成aⅴ人在线观看| 国产日韩欧美日韩大片| 欧美高清在线视频观看不卡| 欧美日韩在线高清| 久久九九国产精品| 欧美大片一区| 欧美专区一区二区三区| 欧美极品色图| 久久久久久尹人网香蕉| 欧美日韩成人在线播放| 久久久亚洲国产天美传媒修理工 | 欧美日韩一区二区三区在线 | 99在线热播精品免费99热| 亚洲尤物视频网| 亚洲欧洲精品一区| 欧美亚洲在线视频| 亚洲视频综合在线| 欧美aⅴ99久久黑人专区| 久久久亚洲国产天美传媒修理工| 欧美日韩一区二| 欧美国产一区视频在线观看| 国产精品一区二区三区久久| 亚洲激情欧美激情| 在线播放豆国产99亚洲| 欧美亚洲日本一区| 午夜天堂精品久久久久| 欧美日韩免费一区二区三区| 亚洲高清激情| 亚洲国产精品激情在线观看| 欧美在线观看视频一区二区| 欧美一区综合| 国产精品极品美女粉嫩高清在线| 亚洲国产成人久久综合| 亚洲国产精品嫩草影院| 久久久久**毛片大全| 久久国产夜色精品鲁鲁99| 国产精品久久久99| aa级大片欧美| 99精品欧美一区二区蜜桃免费| 麻豆av福利av久久av| 蜜臀av国产精品久久久久| 国内成人精品视频| 欧美专区一区二区三区| 久久久精品动漫| 激情综合视频| 美女爽到呻吟久久久久| 亚洲电影免费| 91久久夜色精品国产九色| 久久综合色婷婷| 欧美激情视频一区二区三区在线播放| 在线精品观看| 欧美不卡高清| 亚洲理论电影网| 亚洲欧美成人精品| 国产日韩欧美一区| 久久亚洲欧洲| 91久久精品国产91性色tv| 亚洲美女精品成人在线视频| 亚洲深夜av| 久久国产99| 欧美xxx成人| 亚洲毛片av在线| 国产精品播放| 午夜一级在线看亚洲| 久久综合久久综合九色| 亚洲激情在线观看| 欧美日韩国产一级| 亚洲男同1069视频| 老司机久久99久久精品播放免费| 亚洲国产欧美一区| 欧美天天视频| 久久国产日韩| 亚洲精品午夜精品| 久久精品国产精品亚洲| 亚洲精品国久久99热| 国产精品久久久久国产精品日日 | 国产亚洲精品高潮| 久久天天狠狠| 99热免费精品| 久久一区亚洲| 亚洲一区www| 精品99视频| 欧美网站在线| 久久精品水蜜桃av综合天堂| 亚洲乱码国产乱码精品精98午夜 | 欧美国产免费| 亚洲男人天堂2024| 亚洲高清一区二| 欧美一区二区三区日韩| 亚洲国产中文字幕在线观看| 国产精品女主播在线观看| 欧美va亚洲va香蕉在线| 午夜精品999| 亚洲免费播放| 欧美不卡视频一区发布| 欧美在线观看网站| 日韩一级在线| 亚洲高清免费| 国模精品一区二区三区| 国产精品日韩欧美大师| 欧美日本亚洲韩国国产| 蜜桃av综合| 久久精品观看| 亚洲免费中文字幕| 一区二区国产日产| 亚洲精品裸体| 亚洲电影激情视频网站| 欧美成人嫩草网站| 久久久999|