cocos2d-x 遊戲引擎入口

Cocos2d-x 是當前手遊開發2d遊戲最熱門的引擎了,從知道Cocos2d-x到如今也有一年多的時間,但使用cocos2d-x的時間倒是很是少的,以致於如今使用的時候都是一頭霧水;因此如今打算 跟進一步的瞭解Cocos2d-x遊戲引擎……ios

Cocos2d-x支持跨平臺,而各類平臺的實際應用入口是不相同的,爲了尋找遊戲引擎的入口,現用ios平臺來講明; 注:我本非iOS開發者,對於iOS應用基本框架是不熟悉的,因此下面說的不會很詳細,大概知道幹嘛的就能夠了app

打開3.0 版本的 cpp-empty-test, 在proj.ios目錄下找到main.m,會發現有一個@"AppController";接下來在proj.ios目錄下找到AppController.mm文件,有一個靜態的AppDelegate對象;在application方法的最後 cocos2d::Application *app = cocos2d::Application::getInstance();查看Application類、AppDelegate類、ApplicationProtocol類的源代碼後會發現,app是指向前面看到的AppDelegate靜態對象的;跟蹤app->run();調用,能夠看到CCDirectorCaller類的startMainLoop方法中,會看到有一個selector:@selector(doCaller:); 進入到doCaller方法中就能看到熟悉的東西了:Director::getInstance()->mainLooop();至此,才真正到了引擎內的主循環,開始繪製場景;框架

再有,通常教程會從AppDelegate類提及,這樣的說法我的認爲,雖然邏輯上游戲的入口確實是從這裏啓動的:第一個要加載的場景,第一個要加載的視圖層都是在這裏載入的,從遊戲功能開發的角度看,開發者只要關心這個入口就夠了;但對於想一探究竟的開發者來講,尤爲是沒有開發經驗的新人來講絕對是一個坑; 再吐槽一個:AppDelegate::applicationDidFinishLaunching()方法中調用的Director::getInstance()->runWitnScene();真的只是一個邏輯上的run,進到方法內部後發現,它其實只是一個scene壓棧的過程;也就是一個初始化須要最初繪製的東西的過程……oop

但回過頭來說,這樣的設計是合理的,將須要隱藏的隱藏起來,給開發者一個簡單的入口;學習

最後,一如既往的是,歡迎你們的意見和建議……,你們共同窗習設計

相關文章
相關標籤/搜索