给Cocos2dx项目添加FGUI

win32平台

  1. 用cocos2dx 3.17.2 创建一个空工程。

    • void updateBMFontScale();加上virtual。
  2. 把libfairygui文件夹拷贝到cocos2d/cocos/editor-support/这个目录下。

  3. 添加项目。

    • 错误:无法读取项目文件libfairygui.vcxproj...因为那个路径是fgui官方示例的路径,我们需要改一下。
    <Import Project="..\..\Examples\cocos2d\cocos\2d\cocos2dx.props" />
    <Import Project="..\..\Examples\cocos2d\cocos\2d\cocos2d_headers.props" />
    <Import Project="..\..\Examples\cocos2d\cocos\2d\cocos2dx.props" />
    <Import Project="..\..\Examples\cocos2d\cocos\2d\cocos2d_headers.props" />
    

    改成:

    <Import Project="..\..\..\..\..\cocos2d\cocos\2d\cocos2dx.props" />
    <Import Project="..\..\..\..\..\cocos2d\cocos\2d\cocos2d_headers.props" />
    <Import Project="..\..\..\..\..\cocos2d\cocos\2d\cocos2dx.props" />
    <Import Project="..\..\..\..\..\cocos2d\cocos\2d\cocos2d_headers.props" />
    
  4. 生成项目。

    • 把不可用的平台工具集给改掉。
    • void GLoader3D::onChangeSpine()注释掉。
  5. 拷贝Classes和Resources。

    • 启动项目右键->生成依赖项->项目依赖项->勾上libfairygui。
    • 启动项目右键->属性->C/C++->常规->附加包含目录$(EngineRoot)cocos\editor-support\libfairygui\Classes
    • 启动项目右键->属性->链接器->输入->附加依赖项libfairygui.lib

android平台

  1. 修改fgui的CMakeLists.txt。

    set(FAIRYGUI_HEADER
    editor-support/libfairygui/Classes/Controller.h
    editor-support/libfairygui/Classes/controller_action/ChangePageAction.h
    editor-support/libfairygui/Classes/controller_action/ControllerAction.h
    editor-support/libfairygui/Classes/controller_action/PlayTransitionAction.h
    editor-support/libfairygui/Classes/display/BitmapFont.h
    editor-support/libfairygui/Classes/display/FUIContainer.h
    editor-support/libfairygui/Classes/display/FUIInput.h
    editor-support/libfairygui/Classes/display/FUILabel.h
    editor-support/libfairygui/Classes/display/FUIRichText.h
    editor-support/libfairygui/Classes/display/FUISprite.h
    editor-support/libfairygui/Classes/display/TextFormat.h
    editor-support/libfairygui/Classes/DragDropManager.h
    editor-support/libfairygui/Classes/event/EventContext.h
    editor-support/libfairygui/Classes/event/HitTest.h
    editor-support/libfairygui/Classes/event/InputEvent.h
    editor-support/libfairygui/Classes/event/InputProcessor.h
    editor-support/libfairygui/Classes/event/UIEventDispatcher.h
    editor-support/libfairygui/Classes/event/UIEventType.h
    editor-support/libfairygui/Classes/FairyGUI.h
    editor-support/libfairygui/Classes/FairyGUIMacros.h
    editor-support/libfairygui/Classes/FieldTypes.h
    editor-support/libfairygui/Classes/GButton.h
    editor-support/libfairygui/Classes/GComboBox.h
    editor-support/libfairygui/Classes/GComponent.h
    editor-support/libfairygui/Classes/gears/GearAnimation.h
    editor-support/libfairygui/Classes/gears/GearBase.h
    editor-support/libfairygui/Classes/gears/GearColor.h
    editor-support/libfairygui/Classes/gears/GearDisplay.h
    editor-support/libfairygui/Classes/gears/GearDisplay2.h
    editor-support/libfairygui/Classes/gears/GearFontSize.h
    editor-support/libfairygui/Classes/gears/GearIcon.h
    editor-support/libfairygui/Classes/gears/GearLook.h
    editor-support/libfairygui/Classes/gears/GearSize.h
    editor-support/libfairygui/Classes/gears/GearText.h
    editor-support/libfairygui/Classes/gears/GearXY.h
    editor-support/libfairygui/Classes/GGraph.h
    editor-support/libfairygui/Classes/GGroup.h
    editor-support/libfairygui/Classes/GImage.h
    editor-support/libfairygui/Classes/GLabel.h
    editor-support/libfairygui/Classes/GList.h
    editor-support/libfairygui/Classes/GLoader.h
    editor-support/libfairygui/Classes/GLoader3D.h
    editor-support/libfairygui/Classes/GMovieClip.h
    editor-support/libfairygui/Classes/GObject.h
    editor-support/libfairygui/Classes/GObjectPool.h
    editor-support/libfairygui/Classes/GProgressBar.h
    editor-support/libfairygui/Classes/GRichTextField.h
    editor-support/libfairygui/Classes/GRoot.h
    editor-support/libfairygui/Classes/GScrollBar.h
    editor-support/libfairygui/Classes/GSlider.h
    editor-support/libfairygui/Classes/GTextField.h
    editor-support/libfairygui/Classes/GTextInput.h
    editor-support/libfairygui/Classes/GTree.h
    editor-support/libfairygui/Classes/GTreeNode.h
    editor-support/libfairygui/Classes/Margin.h
    editor-support/libfairygui/Classes/PackageItem.h
    editor-support/libfairygui/Classes/PopupMenu.h
    editor-support/libfairygui/Classes/RelationItem.h
    editor-support/libfairygui/Classes/Relations.h
    editor-support/libfairygui/Classes/ScrollPane.h
    editor-support/libfairygui/Classes/Transition.h
    editor-support/libfairygui/Classes/TranslationHelper.h
    editor-support/libfairygui/Classes/tween/EaseManager.h
    editor-support/libfairygui/Classes/tween/EaseType.h
    editor-support/libfairygui/Classes/tween/GPath.h
    editor-support/libfairygui/Classes/tween/GTween.h
    editor-support/libfairygui/Classes/tween/GTweener.h
    editor-support/libfairygui/Classes/tween/TweenManager.h
    editor-support/libfairygui/Classes/tween/TweenPropType.h
    editor-support/libfairygui/Classes/tween/TweenValue.h
    editor-support/libfairygui/Classes/UIConfig.h
    editor-support/libfairygui/Classes/UIObjectFactory.h
    editor-support/libfairygui/Classes/UIPackage.h
    editor-support/libfairygui/Classes/utils/ByteBuffer.h
    editor-support/libfairygui/Classes/utils/html/HtmlElement.h
    editor-support/libfairygui/Classes/utils/html/HtmlObject.h
    editor-support/libfairygui/Classes/utils/html/HtmlParser.h
    editor-support/libfairygui/Classes/utils/ToolSet.h
    editor-support/libfairygui/Classes/utils/UBBParser.h
    editor-support/libfairygui/Classes/utils/WeakPtr.h
    editor-support/libfairygui/Classes/Window.h
    )
    
    set(FAIRYGUI_SRC
    editor-support/libfairygui/Classes/Controller.cpp
    editor-support/libfairygui/Classes/controller_action/ChangePageAction.cpp
    editor-support/libfairygui/Classes/controller_action/ControllerAction.cpp
    editor-support/libfairygui/Classes/controller_action/PlayTransitionAction.cpp
    editor-support/libfairygui/Classes/display/BitmapFont.cpp
    editor-support/libfairygui/Classes/display/FUIContainer.cpp
    editor-support/libfairygui/Classes/display/FUIInput.cpp
    editor-support/libfairygui/Classes/display/FUILabel.cpp
    editor-support/libfairygui/Classes/display/FUIRichText.cpp
    editor-support/libfairygui/Classes/display/FUISprite.cpp
    editor-support/libfairygui/Classes/display/TextFormat.cpp
    editor-support/libfairygui/Classes/DragDropManager.cpp
    editor-support/libfairygui/Classes/event/EventContext.cpp
    editor-support/libfairygui/Classes/event/HitTest.cpp
    editor-support/libfairygui/Classes/event/InputEvent.cpp
    editor-support/libfairygui/Classes/event/InputProcessor.cpp
    editor-support/libfairygui/Classes/event/UIEventDispatcher.cpp
    editor-support/libfairygui/Classes/GButton.cpp
    editor-support/libfairygui/Classes/GComboBox.cpp
    editor-support/libfairygui/Classes/GComponent.cpp
    editor-support/libfairygui/Classes/gears/GearAnimation.cpp
    editor-support/libfairygui/Classes/gears/GearBase.cpp
    editor-support/libfairygui/Classes/gears/GearColor.cpp
    editor-support/libfairygui/Classes/gears/GearDisplay.cpp
    editor-support/libfairygui/Classes/gears/GearDisplay2.cpp
    editor-support/libfairygui/Classes/gears/GearFontSize.cpp
    editor-support/libfairygui/Classes/gears/GearIcon.cpp
    editor-support/libfairygui/Classes/gears/GearLook.cpp
    editor-support/libfairygui/Classes/gears/GearSize.cpp
    editor-support/libfairygui/Classes/gears/GearText.cpp
    editor-support/libfairygui/Classes/gears/GearXY.cpp
    editor-support/libfairygui/Classes/GGraph.cpp
    editor-support/libfairygui/Classes/GGroup.cpp
    editor-support/libfairygui/Classes/GImage.cpp
    editor-support/libfairygui/Classes/GLabel.cpp
    editor-support/libfairygui/Classes/GList.cpp
    editor-support/libfairygui/Classes/GLoader.cpp
    editor-support/libfairygui/Classes/GLoader3D.cpp
    editor-support/libfairygui/Classes/GMovieClip.cpp
    editor-support/libfairygui/Classes/GObject.cpp
    editor-support/libfairygui/Classes/GObjectPool.cpp
    editor-support/libfairygui/Classes/GProgressBar.cpp
    editor-support/libfairygui/Classes/GRichTextField.cpp
    editor-support/libfairygui/Classes/GRoot.cpp
    editor-support/libfairygui/Classes/GScrollBar.cpp
    editor-support/libfairygui/Classes/GSlider.cpp
    editor-support/libfairygui/Classes/GTextField.cpp
    editor-support/libfairygui/Classes/GTextInput.cpp
    editor-support/libfairygui/Classes/GTree.cpp
    editor-support/libfairygui/Classes/GTreeNode.cpp
    editor-support/libfairygui/Classes/Margin.cpp
    editor-support/libfairygui/Classes/PackageItem.cpp
    editor-support/libfairygui/Classes/PopupMenu.cpp
    editor-support/libfairygui/Classes/RelationItem.cpp
    editor-support/libfairygui/Classes/Relations.cpp
    editor-support/libfairygui/Classes/ScrollPane.cpp
    editor-support/libfairygui/Classes/Transition.cpp
    editor-support/libfairygui/Classes/TranslationHelper.cpp
    editor-support/libfairygui/Classes/tween/EaseManager.cpp
    editor-support/libfairygui/Classes/tween/GPath.cpp
    editor-support/libfairygui/Classes/tween/GTween.cpp
    editor-support/libfairygui/Classes/tween/GTweener.cpp
    editor-support/libfairygui/Classes/tween/TweenManager.cpp
    editor-support/libfairygui/Classes/tween/TweenPropType.cpp
    editor-support/libfairygui/Classes/tween/TweenValue.cpp
    editor-support/libfairygui/Classes/UIConfig.cpp
    editor-support/libfairygui/Classes/UIObjectFactory.cpp
    editor-support/libfairygui/Classes/UIPackage.cpp
    editor-support/libfairygui/Classes/utils/ByteBuffer.cpp
    editor-support/libfairygui/Classes/utils/html/HtmlElement.cpp
    editor-support/libfairygui/Classes/utils/html/HtmlObject.cpp
    editor-support/libfairygui/Classes/utils/html/HtmlParser.cpp
    editor-support/libfairygui/Classes/utils/ToolSet.cpp
    editor-support/libfairygui/Classes/utils/UBBParser.cpp
    editor-support/libfairygui/Classes/utils/WeakPtr.cpp
    editor-support/libfairygui/Classes/Window.cpp
    )
    
  2. 修改cocos2d的CMakeLists.txt。

    //省略
    
    option(BUILD_EDITOR_SPINE "Build editor support for spine" ON)
    option(BUILD_EDITOR_FGUI "Build editor support for fgui" ON)//增加
    option(BUILD_EXTENSIONS "Build extension library" ON)
    
    //省略
    
    if(BUILD_EDITOR_SPINE)
        include(editor-support/spine/CMakeLists.txt)
        set(COCOS_EDITOR_SUPPORT_SRC ${COCOS_EDITOR_SUPPORT_SRC} ${COCOS_SPINE_SRC} ${COCOS_SPINE_HEADER})
    endif(BUILD_EDITOR_SPINE)
    
    if(BUILD_EDITOR_FGUI)
        include(editor-support/libfairygui/CMakeLists.txt)
        set(COCOS_EDITOR_SUPPORT_SRC ${COCOS_EDITOR_SUPPORT_SRC} ${FAIRYGUI_SRC} ${FAIRYGUI_HEADER})//增加
    endif(BUILD_EDITOR_FGUI)
    
    if(BUILD_EXTENSIONS)
        include(../extensions/CMakeLists.txt)
    endif(BUILD_EXTENSIONS)
    
    //省略
    
    target_include_directories(cocos2d
        PUBLIC ${COCOS2DX_ROOT_PATH}
        PUBLIC ${COCOS2DX_ROOT_PATH}/cocos
        PUBLIC ${COCOS2DX_ROOT_PATH}/extensions
        PUBLIC ${COCOS2DX_ROOT_PATH}/cocos/platform
        PUBLIC ${COCOS2DX_ROOT_PATH}/cocos/editor-support/libfairygui/Classes//增加
        INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/base
        INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/editor-support
        INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/audio/include
        INTERFACE ${COCOS2DX_ROOT_PATH}/cocos/platform/${PLATFORM_FOLDER}
    )
    
  3. 修改libfairygui/Classes/GRoot.cpp这个文件,把#include "AudioEngine.h"改成#include "audio/include/AudioEngine.h"

  4. 修改启动项目的CMakeLists.txt。

    # add cross-platforms source files and header files 
    list(APPEND GAME_SOURCE
        Classes/AppDelegate.cpp
        Classes/BagScene.cpp
        Classes/BagWindow.cpp
        Classes/BasicsScene.cpp
        Classes/ChatScene.cpp
        Classes/CooldownScene.cpp
        Classes/DemoScene.cpp
        Classes/EmojiParser.cpp
        Classes/GuideScene.cpp
        Classes/HitTestScene.cpp
        Classes/JoystickModule.cpp
        Classes/JoystickScene.cpp
        Classes/ListEffectScene.cpp
        Classes/LoopListScene.cpp
        Classes/MailItem.cpp
        Classes/MenuScene.cpp
        Classes/ModalWaitingScene.cpp
        Classes/PullToRefreshScene.cpp
        Classes/ScrollPaneScene.cpp
        Classes/TransitionDemoScene.cpp
        Classes/TreeViewScene.cpp
        Classes/VirtualListScene.cpp
        Classes/Window1.cpp
        Classes/Window2.cpp
        )
    list(APPEND GAME_HEADER
        Classes/AppDelegate.h
        Classes/BagScene.h
        Classes/BagWindow.h
        Classes/BasicsScene.h
        Classes/ChatScene.h
        Classes/CooldownScene.h
        Classes/DemoScene.h
        Classes/EmojiParser.h
        Classes/GuideScene.h
        Classes/HitTestScene.h
        Classes/JoystickModule.h
        Classes/JoystickScene.h
        Classes/ListEffectScene.h
        Classes/LoopListScene.h
        Classes/MailItem.h
        Classes/MenuScene.h
        Classes/ModalWaitingScene.h
        Classes/PullToRefreshScene.h
        Classes/ScrollPaneScene.h
        Classes/TransitionDemoScene.h
        Classes/TreeViewScene.h
        Classes/VirtualListScene.h
        Classes/Window1.h
        Classes/Window2.h
        )
    
    target_link_libraries(${APP_NAME} cocos2d)
    target_include_directories(${APP_NAME}
            PRIVATE Classes
            PRIVATE ${COCOS2DX_ROOT_PATH}/cocos/audio/include/
            PRIVATE ${COCOS2DX_ROOT_PATH}/cocos/editor-support/libfairygui/Classes/
    )
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容