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

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>
            亚洲免费观看高清在线观看 | 欧美日韩网站| 久久久久久久久久久久久9999| 亚洲性线免费观看视频成熟| 亚洲免费观看| 亚洲小说欧美另类社区| 亚洲欧美日韩精品久久久久| 欧美一区二区三区啪啪| 久久久噜噜噜久久久| 欧美成人中文字幕在线| 欧美日韩国产首页在线观看| 国产精品日韩欧美大师| 国内精品免费午夜毛片| 亚洲精品欧美专区| 欧美一区二区三区播放老司机| 久久精品日产第一区二区| 蜜桃av综合| 亚洲人www| 日韩视频在线永久播放| 亚洲欧美综合v| 欧美黄色视屏| 国产精品中文在线| 亚洲理论在线观看| 久久精品国产一区二区三区| 欧美激情精品久久久久久黑人| 99精品国产热久久91蜜凸| 欧美一区二区三区四区在线| 欧美国产综合一区二区| 欧美不卡高清| 99精品欧美一区二区三区综合在线 | 欧美国产先锋| 国产美女精品| 日韩亚洲在线| 久久综合九色综合欧美就去吻| 亚洲三级影片| 久久人人爽爽爽人久久久| 欧美无砖砖区免费| 亚洲精品资源| 久久一区激情| 亚洲一区综合| 欧美日韩日本国产亚洲在线| 136国产福利精品导航网址应用 | 亚洲欧美春色| 亚洲精品乱码久久久久久| 欧美一区二区久久久| 欧美日韩国产在线| 亚洲人成绝费网站色www| 久久―日本道色综合久久| 亚洲性视频网站| 国产精品美腿一区在线看| 在线亚洲一区| 亚洲免费观看在线观看| 嫩草成人www欧美| 一区二区三区在线视频观看| 欧美在线观看视频在线| 亚洲视频自拍偷拍| 欧美视频一区二区三区| 夜夜爽av福利精品导航| 亚洲国产成人久久综合| 欧美gay视频激情| 亚洲国产精品成人综合色在线婷婷| 久久精品视频网| 久久久久久久网| 在线免费观看欧美| 欧美激情1区2区| 欧美精品成人| 亚洲午夜av| 亚洲午夜一级| 国产免费亚洲高清| 久久精品在线观看| 久久精品国产视频| 亚洲国产99精品国自产| 欧美福利专区| 欧美精品一区二区三区在线播放| 日韩亚洲精品电影| 亚洲美女电影在线| 国产精品亚洲片夜色在线| 性色av一区二区怡红| 午夜精品久久一牛影视| 好吊视频一区二区三区四区| 免费人成精品欧美精品| 欧美黄色一区二区| 午夜精品久久久久久久久久久久 | 亚洲小说欧美另类婷婷| 欧美色欧美亚洲另类七区| 一本到高清视频免费精品| 一二美女精品欧洲| 国产亚洲欧美在线| 欧美黄色免费网站| 国产精品qvod| 蜜桃久久av一区| 欧美午夜一区二区福利视频| 久久精品视频在线看| 欧美a级片网站| 性欧美18~19sex高清播放| 久久久夜精品| 亚洲女同精品视频| 久久人人97超碰国产公开结果| 日韩亚洲精品在线| 欧美一区午夜精品| 一区二区三区四区五区视频| 性欧美大战久久久久久久免费观看 | 欧美日韩在线不卡一区| 久久久www成人免费毛片麻豆| 老鸭窝91久久精品色噜噜导演| 一区二区三区久久久| 久久久不卡网国产精品一区| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区免费观看视频| 日韩视频一区二区| 久久久精品日韩| 羞羞答答国产精品www一本| 免费h精品视频在线播放| 欧美一区二区私人影院日本| 欧美jizzhd精品欧美巨大免费| 欧美亚洲自偷自偷| 欧美日韩一区二区三| 亚洲二区精品| 亚洲大胆女人| 欧美呦呦网站| 亚洲自拍都市欧美小说| 欧美高清视频在线播放| 欧美.日韩.国产.一区.二区| 国产欧美一区二区精品婷婷 | 一区二区三区久久| 亚洲精品久久久一区二区三区| 欧美在线三级| 久久高清免费观看| 国产精品一区二区在线观看不卡| 亚洲乱亚洲高清| 99热免费精品| 欧美极品在线视频| 欧美激情一区二区三区在线视频观看 | 亚洲激情偷拍| 在线播放中文一区| 久久久久99| 免费不卡在线观看| 永久久久久久| 久久久久欧美精品| 久久久亚洲影院你懂的| 国产自产精品| 久久九九热免费视频| 开元免费观看欧美电视剧网站| 国产视频在线观看一区二区| 亚洲欧美在线另类| 久久狠狠亚洲综合| 狠狠色丁香久久婷婷综合_中| 欧美一区亚洲二区| 美女视频一区免费观看| 亚洲激情在线| 牛牛国产精品| 亚洲久久一区二区| 午夜一区二区三区在线观看| 国产精品美女在线| 久久久www成人免费精品| 欧美成人激情在线| 亚洲激情国产精品| 欧美视频二区36p| 羞羞色国产精品| 久久精品视频在线看| 亚洲国产另类 国产精品国产免费| 免费视频最近日韩| 一本色道久久88精品综合| 欧美在线看片| 亚洲国产精品成人va在线观看| 欧美成人蜜桃| 在线视频精品一区| 久久精品国产精品亚洲| 在线播放日韩专区| 国产精品扒开腿爽爽爽视频| 欧美一区二视频在线免费观看| 久久久蜜桃一区二区人| 亚洲精品123区| 国产精品高潮呻吟久久| 久久久精品动漫| av72成人在线| 久久久蜜桃精品| 亚洲制服少妇| 在线精品福利| 国产裸体写真av一区二区| 美女被久久久| 亚洲自拍啪啪| 91久久国产综合久久91精品网站| 欧美一区二区成人| 亚洲国产高清一区二区三区| 国产精品久久一区二区三区| 巨乳诱惑日韩免费av| 亚洲视频电影在线| 亚洲高清视频中文字幕| 亚洲欧美日韩爽爽影院| 亚洲伦理在线| 影音先锋一区| 国产综合欧美在线看| 欧美日韩免费一区二区三区| 久久色中文字幕| 欧美一区二区日韩| 亚洲网友自拍| 一区二区av| 99精品欧美一区二区三区综合在线| 牛牛精品成人免费视频|