Cocos Studio for Mac을 v3.2에서 억지로 사용

소개



아직 CocosStudio for Mac은 v3.x계에 대응하고 있지 않으므로, 아무래도 Mac판이 사용하고 싶다! ! ! 라고 사람 전용입니다.

확실히 사용되지 않는 절차입니다. 이용시에는 주의해 주십시오

억지로 개수하다



문제점의 습관



우선, v3.x계에서 왜 움직이지 않는지를 간단하게 드러낸다.
  • 내보낸 json의 루트 이름이 widgetTree 대신 nodeTree입니다
  • CocosStudio for Mac에서 Proejct를 만들면 rootWidget이 Node가됩니다
  • Node 의 WidgetReader 클래스가 없다

  • 개수 순서 1:widgetTree는 nodeTree라고 한다



    cocos2d/editor-support/cocostudio/CCSGUIReader.cpp(1176행 정도) 수정 전
    Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, const char* fullPath, const char* fileName)
    {
        // ~ 省略 ~
    
        const rapidjson::Value& widgetTree = DICTOOL->getSubDictionary_json(data, "widgetTree");
    
        // ~ 省略 ~
    }
    

    cocos2d/editor-support/cocostudio/CCSGUIReader.cpp(1176행 정도) 수정 후
    Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, const char* fullPath, const char* fileName)
    {
        // ~ 省略 ~
    
        const rapidjson::Value& widgetTree = DICTOOL->getSubDictionary_json(data, "nodeTree");
    
        // ~ 省略 ~
    }
    

    개수 순서 2 : Node는 Layout이라고 한다



    cocos2d/editor-support/cocostudio/CCSGUIReader.cpp(1428행 정도) 수정 전
    Widget* WidgetPropertiesReader0300::widgetFromJsonDictionary(const rapidjson::Value& data)
    {
        const char* classname = DICTOOL->getStringValue_json(data, "classname");
        const rapidjson::Value& uiOptions = DICTOOL->getSubDictionary_json(data, "options");
        Widget* widget = this->createGUI(classname);
    //    CCLOG("classname = %s", classname);
    
        std::string readerName = this->getWidgetReaderClassName(classname);
    
        WidgetReaderProtocol* reader = this->createWidgetReaderProtocol(readerName);
    
        // ~ 省略 ~
    }
    

    cocos2d/editor-support/cocostudio/CCSGUIReader.cpp(1428행 정도) 수정 후
    Widget* WidgetPropertiesReader0300::widgetFromJsonDictionary(const rapidjson::Value& data)
    {
        const char* classname = DICTOOL->getStringValue_json(data, "classname");
        const rapidjson::Value& uiOptions = DICTOOL->getSubDictionary_json(data, "options");
        Widget* widget = this->createGUI(classname);
    //    CCLOG("classname = %s", classname);
    
        // widget生成できなかったやつ 且つ NodeならLayoutということにする
        if (!widget && std::strcmp(classname, "Node") == 0) {
            classname = "Layout";
            widget = Layout::create();
        }
    
        std::string readerName = this->getWidgetReaderClassName(classname);
    
        WidgetReaderProtocol* reader = this->createWidgetReaderProtocol(readerName);
    
        // ~ 省略 ~
    }
    

    CocosStudio로 화면을 만들고 통합



    CocosStudio로 화면을 만들고 내보내기



    만든 화면




    Node
      |- Layout
           |- Layout
           |    |- Text
           |- Image
           |- Image
    

    파일 -> 내보내기 프로젝트





    Export의 option은 그대로 좋다. 모든 리소스 파일을 가져올까요? 라든가 그런 설정이므로.



    Cocos2d-x 프로젝트에 내장



    내보낸 파일을 Add File



    프로젝트의 Resources 아래에 Export한 것을 통째로 퍼뜨려 Add File 해 주세요.



    480x320으로 만들었으므로 DesignResolutionSize 변경



    CocosStduio로 만드는 화면의 크기에 맞지 않으면 아마 조정이 여러가지 힘들 것입니다.

    AppDelegate.cpp
    bool AppDelegate::applicationDidFinishLaunching() {
    
        // ~ 省略 ~
    
        // CocosStudioで作ったレイアウトサイズにする
        glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);
    
        // ~ 省略 ~
    }
    

    Scene에 배치



    드디어 구현입니다. include도 잊지 않고.

    HelloWorldScene.cpp
    #include "HelloWorldScene.h"
    #include "cocostudio/CocoStudio.h"
    
    USING_NS_CC;
    using namespace cocostudio;
    
    bool HelloWorld::init()
    {
        // ~ 省略 ~
    
        // CocosStudioのLayout読み込み
        auto layout = GUIReader::getInstance()->widgetFromJsonFile("NewProject_1/NewProject_1.json");
        this->addChild(layout);
    
        return true;
    }
    

    단 두 줄입니다.

    실행 결과





    이상이 됩니다.
    세세한 부분까지 검증하지 않기 때문에, 여러가지 문제가 있을지도 모릅니다.

    아무래도 CocosStudio의 Mac판을 사용하고 싶다고 하는 사람용이므로, 이용시는 주의해 주세요.

    빨리 v3.2 대응하지 않을까~(흰눈

    좋은 웹페이지 즐겨찾기