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

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| 欧美jizz19性欧美| 欧美bbbxxxxx| 欧美精品在线一区| 欧美日韩精品系列| 国产精品素人视频| 国产亚洲欧美中文| 亚洲国产精品久久| 一本色道久久综合亚洲精品不卡 | 国产综合色产在线精品| 国语精品中文字幕| 亚洲日本视频| 亚洲欧美一区二区激情| 久久久久高清| 亚洲福利视频在线| 亚洲精品一区二区三区蜜桃久| 99国产一区| 欧美在线一区二区三区| 欧美成人中文| 国产一区二区精品丝袜| 亚洲电影一级黄| 亚洲影视在线播放| 久久漫画官网| 99精品视频免费在线观看| 亚洲欧美在线免费| 欧美成人免费全部观看天天性色| 国产精品二区在线观看| 怡红院精品视频在线观看极品| 亚洲精品在线视频观看| 久久精品免费看| 一区二区三区波多野结衣在线观看| 久久国产精品72免费观看| 欧美激情一区二区三级高清视频 | 欧美3dxxxxhd| 宅男噜噜噜66一区二区| 久久久久久精| 国产精品啊啊啊| 最新国产精品拍自在线播放| 亚洲女同精品视频| 欧美成人性生活| 男女精品网站| 欧美午夜精品久久久久久超碰| 国产在线成人| 欧美一级夜夜爽| 99re国产精品| 欧美国产高清| 亚洲精品视频免费观看| 鲁大师成人一区二区三区| 午夜精品久久久久久99热软件| 欧美三级日本三级少妇99| 日韩视频精品在线观看| 欧美暴力喷水在线| 久久久午夜视频| 国自产拍偷拍福利精品免费一| 午夜欧美不卡精品aaaaa| 一区二区三区视频在线观看| 欧美精品18+| 在线一区欧美| 亚洲午夜av| 国产日韩欧美高清免费| 久久国产精品久久久| 午夜国产精品视频| 国产综合久久久久影院| 另类综合日韩欧美亚洲| 久久蜜桃av一区精品变态类天堂| 国内精品伊人久久久久av影院 | 国产视频久久久久久久| 欧美一级大片在线观看| 亚洲欧美日韩在线播放| 国产亚洲一区精品| 美国成人毛片| 欧美成人免费播放| 亚洲一区二区精品| 午夜在线视频观看日韩17c| 国产日韩欧美| 欧美大片国产精品| 欧美日韩在线播| 欧美自拍偷拍午夜视频| 久久久精品午夜少妇| 亚洲欧洲另类国产综合| 亚洲美女精品久久| 国产欧美日韩综合一区在线播放| 性做久久久久久| 久久久夜夜夜| 在线视频精品| 久久成人一区二区| 99国产精品久久| 亚洲综合色婷婷| 亚洲国产高清aⅴ视频| 日韩一级网站| 国产在线观看一区| 亚洲精品国偷自产在线99热| 国产精品久久久久久影视| 久久综合中文字幕| 欧美日韩国产bt| 久久婷婷国产麻豆91天堂| 欧美成人首页| 久久久蜜桃一区二区人| 欧美日韩精品免费观看| 久久蜜桃精品| 国产美女高潮久久白浆| 一区二区三区视频观看| 国产视频精品免费播放| 91久久精品美女高潮| 国产精品视频午夜| 欧美国内亚洲| 国产精品欧美在线| 亚洲国产综合在线| 在线观看一区视频| 亚洲自拍啪啪| 正在播放欧美视频| 美女久久网站| 久久久精品一品道一区| 欧美性一区二区| 91久久黄色| 在线欧美小视频| 欧美一级淫片播放口| 一本色道久久88精品综合| 久久综合精品一区| 裸体丰满少妇做受久久99精品| 国产精品―色哟哟| 99视频精品免费观看| 亚洲看片网站| 欧美福利网址| 欧美国产一区在线| 亚洲国产精品第一区二区| 久久久999成人| 久久先锋影音av| 国产日本欧美视频| 亚洲在线观看| 欧美制服第一页| 国产精品视频yy9099| 亚洲午夜精品网| 亚洲欧美日韩精品久久| 欧美精品1区2区3区| 亚洲国语精品自产拍在线观看| 一区视频在线播放| 久久久久欧美精品| 免费人成网站在线观看欧美高清| 国产一区在线免费观看| 欧美一区二区三区的| 久久久www成人免费无遮挡大片| 国产精品午夜视频| 欧美亚洲一区| 欧美 日韩 国产在线| 亚洲国产精品ⅴa在线观看| 美日韩精品免费| 欧美激情一二区| 亚洲乱码国产乱码精品精天堂 | 亚洲精品1区| 夜夜嗨一区二区三区| 欧美日韩视频免费播放| 亚洲午夜av在线| 久久在线91| 亚洲欧洲日产国产网站| 欧美日韩精品系列| 亚洲欧美国产另类| 久久午夜电影| 一本色道久久加勒比精品 | 亚洲日韩成人| 欧美日韩精品欧美日韩精品| 在线视频精品| 久久综合色一综合色88| 欧美人与性动交a欧美精品| 欧美在线观看天堂一区二区三区| 国产精品系列在线播放| 久久国产88| 亚洲国产高潮在线观看| 亚洲图色在线| 韩国成人理伦片免费播放| 欧美成人精品h版在线观看| 一本大道久久a久久精品综合| 欧美一区二区播放| 91久久国产精品91久久性色| 国产精品久久久久久久久果冻传媒 | 国产精品美女视频网站| 久久国产精品亚洲77777| 亚洲高清电影| 欧美专区在线| 夜夜狂射影院欧美极品| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美国产乱视频| 亚洲欧美www| 亚洲第一天堂无码专区| 性亚洲最疯狂xxxx高清| 99re66热这里只有精品4| 国产亚洲一区二区在线观看 | 国产日韩欧美中文| 欧美精品在线视频| 久久久久久亚洲精品不卡4k岛国| 99v久久综合狠狠综合久久| 欧美不卡三区| 久久久久青草大香线综合精品| 99国产精品视频免费观看一公开| 国产亚洲一区二区三区| 国产精品美女久久久浪潮软件| 欧美成人精品福利| 久久婷婷色综合| 欧美自拍偷拍午夜视频|