CocoStudio基础教程(5)使用CocoStudio场景编辑器关联组件

摘要:
动画是骨骼组件,UI是UI组件。其中,ComRender是一个组件包,我们可以通过它的getNode方法获得所需的UILayer。然后我们可以通过名称获得特定布局。因为场景编辑器仅导出节点,所以不会影响外层。
1、概述

  我们有了UI交互、有了动画人物、有了物理模拟,还差最后一步——将这些元素融合起来。这就要用到cocoStudio中的场景编辑器了。这次我们要将先前我们做过的所有东西都放到一个场景中去。这项工程比看起来是要简单。

2、创建场景

  运行CocoStudio,选择SceneEditor。进入后创建一个新的工程:MyScene。然后找到先前我们制作的UI部分的导出资源、动画部分的导出资源,将其复制到这个场景工程的Resource文件夹下。

  资源准备完成,我们就可以开始制作场景了。制作比较简单,就是拖拖拽拽。先更改场景大小为1024x768。动画是骨骼组件、UI是UI组件。另外,我还拖进去一个粒子。制作完成后可以点击播放看到模拟器运行的效果。一切ok后导出文件。

3、关联程序
  • 3.1大体思路

  我们使用SceneReader中的一个初始化函数来加载导出的场景文件。返回值是一个Node。场景中的每一个功能单元也都是一个Node,它们是这个根Node的子节点。这些子Node上附加了很多组件(component)。这些component就是我们之前编辑的各种功能了。比如动画、UI、粒子、声音、自定义属性等等。我们如果想要取到某一个component,我们就首先要找到这个子Node,然后在它上面找到相应的component,最后对它进行操作。

  • 3.2载入场景、获取组件

    首先,我们运行脚本创建一个新工程:testScene。编译运行,确保创建正确后,将刚才导出的文件复制到Resource中。 下面这段代码,展示了如何创建场景与获取组件:

//……  
    auto node = SceneReader::getInstance()->createNodeWithSceneFile("MyScene.json");  
    if(node)  
    {  
        addChild(node);  
    }     
  
    /////////////////////////////////  
    auto child = node->getChildByTag(10004);  
    auto reader = (ComRender*)child->getComponent("GUIComponent");  
    auto layer = (UILayer*)reader->getNode();  
<span style="white-space:pre">  </span>m_layout = (Layout*)layer->getWidgetByName("Panel");  
//……  

其中,ComRender是一个component的包装,通过它的getNode方法能够取到我们需要的UILayer。然后我们再通过名字取到具体的layout。接下来,就与之前的关联方式相同了。

  •   3.3物理场景

    物理场景没有任何变化,先前的创建方式完全能够兼容。因为场景编辑器导出的也只是一个Node罢了,不会影响外层的Layer。 接下来的具体的关联逻辑可以看前几篇博客。代码比较多,而且都是复制粘贴比较无脑,就不复述了。也可以看文章下面提供的Demo。

4、总结

    通过场景编辑器,可以将先前在CocoStudio中制作的元素可视化的放到一个Node中。其意义也在于可以将程序与美术的工作分离开来。导出的文件在程序中创建成一个有众多子节点的Node,每一个Node上都挂有自己特色的component。存在的问题之前也提到过,就是没有一个统一的导出文件做索引,作为标志的tag不是自动管理的,可能会产生些问题。

免责声明:文章转载自《CocoStudio基础教程(5)使用CocoStudio场景编辑器关联组件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《MinDoc 接口文档在线管理系统》双态运维联盟首个“共研基地”落户云南电网信息中心下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue 3 组件开发:搭建基于 Vite 的在线表格编辑系统(组件集成)

通过前文的学习,我们已经用 Vite 搭建出了Vue 3 的项目原型。今天,我们将基于这个原型,集成 SpreadJS 电子表格组件和在线编辑器组件,使其具备 Excel公式计算、在线导入导出 Excel 文档、数据透视表和可视化分析能力,实现在线表格编辑系统的雏形。 设计思路 · 同时创建SpreadJS 和Designer(表格编辑器)两个组件,用切换...

git--指定不上传的文件夹

在使用 vue-cli 脚手架的时候,有一个依赖模板文件夹是不希望被上传到git上的,因为里面文件太多了。 解决办法:手动创建git忽略push清单,node_module以及自身 1.文件夹内右键git bash,输 touch .gitignore,注意中间有空格。  2.编辑器打开生成的 .gitignore 文件,加入: node_modules...

从word中复制内容包含图片到fckeditor编辑器中

如何做到 ueditor批量上传word图片? 1、前端引用代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="ht...

mac电脑安装nvm和node

mac电脑要安装node,可以先安装nvm,并通过nvm来管理node版本。 1. 首先查看电脑上是否安装的有node,查看node版本 node -v 2.如果有node需要删除全局node,重新安装 npm ls -g --depth=0 # 查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装 sudo rm...

NPM 配置文件修改

NPM 配置文件修改 几乎每一门语言都有配套的包管理器,比如 Ruby 有RubyGems,Go 有 go modules,npm 作为 node 的包管理器,你有想过全局安装的 node 包都放在硬盘里面的哪个地方?它有没有配置文件?node 包的缓存位置在哪里?node 的包管理工具是 npm,npm 的 配置文件是.npmrc 文件,您可以通过npm...

让JavaScript在Visual Studio 2015中编辑得更容易

微软发布的Visual Studio 2015展示了该公司对于让该开发工具更好的支持主流的开发语言的工作。微软项目经理Jordan Matthiesen已经详细列出了一些具体处理JavaScript开发的新增功能。Matthiesen解释了他的JavaScript工具团队专注于提高对JavaScript库、ECMAScript 2015(以前是ECMAS...