Cocos2dx就不廢話介紹了, 很火的遊戲引擎。關鍵是它開源。可以免費下載、學習、開發。不用搞這麼多激活的東西。javascript
如下以Cocos2dx 2.x爲例說明這個平臺的一些基本東西。儘管現在Cocos2dx早已去到3.x的穩定版本號,但之因此選用Cocos2dx 2.x版本號。主要是這方面的資料比較多,原本搞Cocos2dx的人就很少了,搞了也沒幾我的寫寫編程記錄,再去毫無資料僅僅有一堆難以看懂的官方文檔的Cocos2dx 3.x,基本上等於瞎整。php
首先,由於這引擎在Windows的主流平臺是經過你們熟悉的C++寫出來的。因此Cocos2dx 2.x的開發,你首先要準備Visual Studio 2010以上的版本號。假設你選用Cocos2dx 3.x還要支持準備Visual Studio 2012以上的版本號。已經不支持Visual Studio 2008了。這就沒辦法了,怪怪下載一個完整安裝。網上一搜一堆。不說了。css
以後,由於Cocos2dx 2.x在當今站點的最後一版2.2.6再也不提供InstallWizardForVS2010.js這鬼東西。需要用python語言建立新的project,所以你可以參看我以前的《【Python】Windows版本號的Python開發環境的配置,Helloworld,Python中文問題。輸入輸出、條件、循環、數組、類》(點擊打開連接)先配好Python2.x的環境。java
而後,你纔在Cocos2dx的中文官網(點擊打開連接)。例如如下圖,拉到最如下。下載Cocos2dx 2.x版本號。python
詳細下載地址爲:http://54.192.159.100/cocos2d-x-2.2.6.zip?fid=D2qKo-*f7vaAbUj7fijGQlgs5hzdkV4YAAAAAOeOX4E0-gk5fRKd*Y-Bb8j7lCvn&mid=666&threshold=150&tid=5D3FD9855047216E67D27C85E859FC2D&srcid=119&verno=1android
下載以後,獲得一個cocos2d-x-2.2.6.zip,解壓。這個解壓位置就是你之後cocos2dx的開發環境、project的所在文件夾。和php是同樣的,很差遷移。請當心選擇。ios
在你的cocos2dx的解壓文件夾找到build-win32.bat這東西,雙擊執行。編程
經歷例如如下的一個漫長的編譯過程:windows
搞好以後,會出現例如如下的一個界面,cocos2dx官方提供的一大堆樣例,有興趣看看以後,可以直接關閉。數組
至此。Cocos2dx的配置完畢。
如下建立一個屬於咱們本身的Helloworld。不要用官方的樣例。根本看不出什麼端倪。
利用命令行進入.\cocos2d-x-2.2.6\tools\project-creator這個目錄。利用python命令,例如如下圖,建立一個工程。
create_project.py -project 你的工程目錄名稱 -package 包名 -language 開發語言(基本上爲cpp,不排除有大神精通肥豬流的Lua,也不建議使用javascript開發!)
在建立的過程當中,可能會有如上圖的報錯,不用管,因爲你建立的MyDemo工程已經成功出現在.\cocos2d-x-2.2.6\projects目錄了,進入.\cocos2d-x-2.2.6\projects\MyDemo\proj.win32打開HelloCpp.sln,開始利用Cocos2dx引擎(框架)在Windows上開發遊戲。
你可以觀察到在.\cocos2d-x-2.2.6\projects\MyDemo。出現proj.android、proj.ios等平臺的目錄。這裏意味着。你可以在這些平臺相同利用Cocos2dx引擎(框架)進行開發。
不是說一個平臺開發,多平臺共同編譯……
打開HelloCpp.sln以後,等待Visual Studio 2010載入一大堆外部庫以後,你可以看到例如如下的文件結構:
首先。你要明確一個概念。Cocos2dx中最簡單的Helloworld,是由一個叫Helloworld的場景、而後在這個Helloworld場景上放上一個Helloworld字符串所組成的。
官方初始的Helloworld還在Helloworld這個場景中放上背景圖片、關閉button等雜七雜八的東西。讓Helloworld文件看起來比較複雜。
咱們先從上圖的main.cpp與AppDelegate.cpp入手,先設置好程序的一些基本東西。
首先是main.cpp。這東西的主函數就5行代碼,將其關於程序標題與窗體尺寸的1八、19行進行改動。例如如下:
#include "main.h" #include "AppDelegate.h" #include "CCEGLView.h" USING_NS_CC; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // create the application instance AppDelegate app; CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setViewName("HelloWorld");//改動程序執行的標題爲Helloworld eglView->setFrameSize(1024, 768);//修成程序執行的尺寸爲1024x768 return CCApplication::sharedApplication()->run(); }
其他代碼看不懂臨時先不要管,就像你當初學C語言,沒必要在意#include<stdio.h>與void main(){}是什麼鬼,你首先要會改printf()中的內容。關於引入、函數這些東西。回頭再來學。
以後,尚未改完,對AppDelegate.cpp進行改動,把第22行的幀數調試信息關了。第25行的幀數有興趣可以改下。只是改了也看不出效果。改動例如如下:
#include "AppDelegate.h" #include "HelloWorldScene.h" USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { } bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirector = CCDirector::sharedDirector(); CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); // turn on display FPS pDirector->setDisplayStats(false);//關閉調試信息 // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60);//這裏是設置遊戲執行的幀數鎖定爲60,通常牛B機器、牛B的遊戲都是鎖這個幀數,30幀是低配 // create a scene. it's an autorelease object CCScene *pScene = HelloWorld::scene(); // run pDirector->runWithScene(pScene); return true; } // This function will be called when the app is inactive. When comes a phone call,it's be invoked too void AppDelegate::applicationDidEnterBackground() { CCDirector::sharedDirector()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); // if you use SimpleAudioEngine, it must resume here // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); }其他那些什麼初始化代碼之類。看不懂,先不要管,也不要改。
以後,對整個程序的核心,管理HelloWorld這個場景的HelloWorldScene.cpp進行改動。放上屬於咱們本身的東西,去掉官方的東西。主要對HelloWorldScene.cpp中的初始化參數bool HelloWorld::init(){}進行改動。其他不要動。整個HelloWorldScene.cpp改動例如如下:
#include "HelloWorldScene.h" USING_NS_CC; CCScene* HelloWorld::scene() { // 'scene' is an autorelease object CCScene *scene = CCScene::create(); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene; } // on "init" you need to initialize your instance bool HelloWorld::init() { //保留已經存在的初始化部分。不要進行改動,開始 if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); //保留已經存在的初始化部分。不要進行改動。結束 CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 96);//聲明一個標籤文本Helloworld,其字體爲Arial。字號爲96 pLabel->setPosition(ccp(origin.x + visibleSize.width/2,//設置標籤文本的位置ccp是必須的。visibleSize.width/2爲屏幕的中央。前面的origin.x是必須加上,用於多平臺固定好位置 origin.y + visibleSize.height/2));//y部分同理 this->addChild(pLabel, 1);//把這個標籤文本Helloworld放到場景中。層疊關係爲1,至關於css中的z-index,這個數字越大,越在上面 return true; } void HelloWorld::menuCloseCallback(CCObject* pSender) { #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert"); #else CCDirector::sharedDirector()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0); #endif #endif }
假設在編譯的時候,遇到例如如下圖的「LINK : fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞」錯誤:
那不關Cocos2dx的問題,是由於電腦中有多個Visual Studio衝突。或者以前版本號的Visual Studio沒有卸載乾淨。
當前系統中存在兩個cvtres.exe文件,版本號不一樣就會有問題了。
咱們讓VS2010直接使用系統的cvtres.exe程序。
重命名或刪除:(vs2010安裝的位置).\VC\bin\cvtres.exe
如圖,我就把cvtres.exe搞成_cvtres.exe完事。
最後總結一下,Cocos2dx的Helloworld比起SSH算是簡單多了。代碼清晰。關鍵是注意好版本號,正如php5.5以後不支持windows2003這種問題,你必須搞清晰Visual Studio 2010僅僅能支持Cocos2dx 2.x之類的。就是安裝可能有些繁瑣,畢竟python環境的安裝對於很是多人來講比較陌生。Visual Studio 2010的安裝的耗時實在是無力吐槽了,再加上Cocos2dx 2.x的編譯過程,就是比較久。最主要網上不少蛋疼的資料就不說了……