《从Cocos到Unity》- 2.UI-UGUI-精灵

《从Cocos到Unity》- 2.UI-UGUI-精灵,第1张

1导入普通和TexturePacker打包出的集。

2的格式选择和九宫格边界的划分。

32D最基础的元素-精灵。

1最简单的小图,直接拖动到Assets文件夹下即可(和Cocos的 *** 作一模一样)

2使用TexturePacker导出的图集,则和Cocos有很大不同。需要按照一下 *** 作流程来

(1)打开TexturePacker选择导出格式为Unity格式。点击导出后会导出 xxxpng和xxxtpsheet2个文件。(导出Cocos格式的时候是xxxpng和xxxplist后缀)

(2)Unity本身也不能直接解析导出的2个文件。需要点击 Window - Asset Store 打开unity的商店。搜索 texturepacker-importer 插件,并且安装到你的项目里。

(3)这个时候将TexturePacker生成的2个文件导入到工程中。插件会自动帮助你解析这个图集。最后的效果如下图所示

1点击导入工程的,在属性检查器上也能看到导入的类型 Texture Type 。这点也和Cocos非常相似,它决定了一张是被当做精灵还是纹理,或者是法线贴图等等来使用

2点击 Sprite Editor 按钮,将会进入九宫格边界的编辑模式。需要注意的时,单张的编辑模式和Cocos一模一样,但是如果是贴图集,那么需要点击整张贴图集(这里不是点击贴图集里的单张小图,这点要注意。)然后d出来的界面如下图所示。可以对每一个小设置九宫格的边界。

3在这里,我们先浅显的理解 Unity - Image 等同于 Cocos - Sprite

1我们选中场景树的根节点。 右键 - 2D Object - Sprites - Square 创建了一个Square的GameObject(类似于Cocos的Node)。注意此节点不需要在Canvas下创建而是直接创建到了场景根节点上。

2点击这个Square,可以看到Sprite Renderer组件,该组件的各项属性也和Cocos里的精灵十分相似。但是它可以不依赖于Canvas组件存在。这里我们肤浅的理解为Sprite Renderer是一个3D空间里的Plane(类似于Cocos3D里的Plane) + 一张贴图。

3两者更加详细的区别可以看这篇博文:

Unity2D:Sprite和Image的区别

1 CocoStudio 场景编辑器

前面的文章 《使用 CocoStudio 创建 Cocos2d-x 序列帧和骨骼动画》《如何使用 CocoStudio UI 编辑器实现《乱斗堂》设置界面》,其中介绍了如何使用动画编辑器创建动画与使用 UI 编辑器创建游戏配置界面,而本文将集两者之大成,使用 CocoStudio 场景编辑器来创建游戏场景,其中包含游戏 UI 与动画,来定制一个游戏主界面。

2 使用 CocoStudio 完成《魔卡幻想》场景编辑

对于环境的搭建使用,请参考之前的文章,或者实时关注 官方 最新版本的安装使用方法。

21 UI 编辑器制作游戏主界面

创建项目(项目名称:MysticalCard),并导入项目 UI 资源,添加 一框设定背景。注意在工具拦设置 “画布” 的大小(如果需要),这将决定着你的设计分辨率,在运行时还需要注意屏幕的适配问题,如放大缩小,位置偏移等,视具体情况而定。

为界面添加 UI 元素,框等,请根据自己的需要定制

实践过程中的注意事项

添加控件时注意必要的属性设置

控件的命名规范,这有助于我们今后在后台编写代码获取界面元素

可交互的控件的 “可交互属性” 开启

22 建立关键帧动画

除了主界面一些必要的 UI 控件,我们还需要一个 “对话框指示” 的动画效果。这是一个帧动画。

准备工作。

如下图所示:

打开 CocoStudio ,启动 动画编辑器

创建一个新的项目,后导入资源(在 “资源窗口” 中,点击 “文件” 或者 “文件夹” 标示,添加需要的素材资源)

在 “资源窗口中” 点击关键帧动画的守帧,拖动至 “渲染窗口”

将第一关键帧拖动至 “渲染窗口” 中心。 可以使用工具栏,快速定位至窗口中心,使显示在正中间,可以让动画更好的定位。

添加其它帧,注意,我们需要选中剩余,然后 “拖动” 到 “对象结构” 视图中的 “第一关键帧” 所在的对象,如下图所示。

关键帧 与 骨骼动画 *** 作区别:在使用骨骼动画的时候,我们将骨骼中的各部分元素,直接拖动添加到 “渲染窗口”,以摆放各骨骼的位置关系,而在 “对象结构” 视图中则表现为,一个列表,标示着每一块骨骼对象,不同帧所改变的是各个骨骼对象的位置,以达到骨骼动画效果。

而在关键帧动画中,它的对象结构只有一个,而在每一帧修改的不是其位置,而是其显示内容。这是两者之间的区别,那 *** 作方式也有所不同。而对于它们所导出的 资源 则是相同,用法也是同样。

剩余帧添加之后,我们看见在 “关键帧” 视图中,已经有了多帧动画,可以播放动画,查看效果,并可以通过修改 “速率” 来控制动画的播放速度。

导出动画资源,导出的资源文件可以被我们在 Cocos2d-x 中以代码的方式直接加载,然后播放其动画,也可以作为 场景编辑器中的一个元素,被添加在场景编辑器里,后面的内容就是使用 场景编辑器来加载一个动画的方式。

23 场景编辑器的 资源“整合”

使用 CocoStudio 可以很好的帮助游戏开发过程中 分工合作。动画编辑器 和 UI 编辑器可以由多个人进行编辑,最后再由一个人统合资源,这也就是场景编辑器的优点了,它除了能支持 CocoStudio 本身所自带的动画编辑器,UI 编辑器,它还能支持,Tmx 地图资源,粒子编辑器的粒子效果资源,声音资源等~并且不断扩展中。以下将给出如何在 场景编辑器整合我们之前所创建的动画与 UI 界面的资源,来实现我们一个场景的运行效果。它的步骤如下:

启动场景编辑器,新建一个场景项目。并设置 “画布” 大小。画布大小要适量。

我们拖动一个 UI 控件到画布之上,它作为我们之前导出的 UI 资源的承载。

我们将之前的 UI 编辑器所导出的资源,导入到当前场景项目中来,导入方式与 UI 编辑器导入资源方式同样,如下图:

为 UI 控件的 “文件” 属性赋值:我们在资源视图中找到 UI 编辑器所导出的 UI 资源,其目录下包含 json 文件资源(如这里的 “MysticalCard_1json”),将其拖动到 UI 控件的文件 属性中去,如下图所示:

前面的步骤已经将 UI 资源导入场景之内,现在需要添加之前所创建的动画资源。

我们以相同的方式导入动画编辑器所导出的动画资源文件。

拖动一个骨骼控件至场景界面,如下图所示。

为骨骼控件的 “文件” 属性赋值,其值为 动画资源中的 ExportJson(或者 json 文件,这取决于动画资源的导出方式) 文件。

运行效果:当我们建立好场景之后,可以通过工具栏运行按钮,效果,这意味着你不用将所有的资源文件,手动以代码的方式添加到 Cocos2d-x 中,便能看到效果。在运行效果中,所有的控件都是可 *** 作的,如下图,但这里只有点击效果,如果需要实现其逻辑,那么现在需要将其加载到 Cocos2d-x 项目中,编写后台代码实现。

3 在 Cocos2d-x 中加载场景资源 并运行之

31 加载场景内容

前面那么多步骤,使用 CocoStudio 来创建了 UI,动画,还有一个场景,而要将其运行在实际的项目中,就非常的简单与方便了,只需几行代码,就能够将其加载到项目中去,当然在这之前我们需要将场景编辑器的资源(场景项目目录中 “Resources” 目录,其中将包含一个 json 文件)复制到项目资源目录中去:

// 加载场景资源

CCNode pNode = CCJsonReader::sharedJsonReader()->createNodeWithJsonFile("McScenejson");

this->addChild(pNode);

通过 CCJsonReader 来读取解析 json,从而获得场景中的节点内容,直接添加到当前的场景就能运行。

32 在场景中播放动画

默认加载的场景资源 动画 组件是没有播放的,需要手动获取动画组件对象,然后调用其播放方法,当然这个步骤也是非常简单的:

// pNode 为 之前所获取的场景资源根节点,通过此节点获取到动画对象,获取方式根据在场景编辑其中设置的层次关系而定

CCComRender pLoadRender = (CCComRender)(pNode->getChildByTag(1)->getChildByTag(1)->getComponent("CCArmature"));

CCArmature armLoad = (CCArmature)(pLoadRender->getRender());

// 播放动画

armLoad->getAnimation()->playByIndex(0);

33 对场景的一些编码说明

使用 CocoStudio 就是为了帮助我们快速的建立 UI 原型,然后通过编码可以获取到里面的任意一个元素对象,并修改其属性值,调用其方法,正如上面所示播放一个动画的方法同样。其步骤如下:

通过 CCJsonReader 类读取 json 文件,将会自动解析构建对象,返回一个节点 CCNode

任何元素都能通过这个 CCNode 节点,获取到,它其实就是一个树,所不同的是层级关系(树节点的位置)

找到需要对象所在的 “树枝”,后通过 getComponent 方法获取 所在的 CCComRender 对象

通过 CCComRender 的 getRender 方法获取最终对象

得到我们所需要的具体对象之后,我们就能够对齐进行草,设置属性,调用方法等,诸如此类

本文中所有的源码示例 和 CocoStudio 项目工程都可以在 这里 查看。

需要一个月。

双击mainfire文件,在层级管理器可以看到它的结构,根节点是一个Canvas,点击Canvas节点,在右边的属性面板可以看到Canvas组件有DesignResolution属性,作为屏幕适配的尺寸。例如设置为1334x750,那么美术出资源时一屏界面的大小就是这个尺寸。不同的手机屏幕引擎自动做等比例缩放,具体缩放倍数,当勾选FixWidth表示界面的宽缩放到跟实际屏幕一样,当勾选FixHeight表示界面的高缩放到跟实际屏幕一样。另外一边相应等比例缩放,可能小于屏幕大小而出现黑边,也可能大于屏幕而被裁剪,这些可能都不是我们自身想要的。

2021年即将过去,对于 游戏 行业来说,这是概念盛行的一年。人们对于新形态内容的渴望,不仅是对创作者们的视野提出挑战,更是对他们手上的工具——解放想象力的关键技术提出的刚性需求。

对于在全球市场份额占比超过20%的 Cocos 引擎来说,2021也是硕果累累的一年。不止2D,他们的3D版本一年进行了五次大更新,新功能的添加马不停蹄;不止 游戏 ,重新挑战生态结构,在其他内容领域上开疆拓土。

“数字化内容正在渗透到不同的行业里面去,这对于 游戏 引擎来说是一个机遇大于挑战的时代。我们会以 游戏 行业的建设为基础,再拓展到其他领域中去。”这是 Cocos 的联合创始人兼CTO林顺在与我们的交流中告诉我们的,打破过往或许存在的单一印象和定位限制,是这个有着十年 历史 的引擎团队的下一步。

1、Cocos 的升级打怪之路

从2010年诞生至今,Cocos 基本上可以说是与整个移动 游戏 市场的风潮同步发展的。从《梦幻西游》到《乱世王者》,从《剑与远征》到《最强蜗牛》,用 Cocos 引擎制作的产品一直没有远离市场最闪亮的镁光灯之下,在中国手游市场40%的份额占比和全球30 万的月活跃开发者,是其一路以来打下的地基。

同时,对于一部分开发者来说,Cocos 在2D 游戏 方面的广泛应用也让他们把Cocos 放进了某个固有印象的盒子当中——打破这个盒子,也是 Cocos 今年所努力在做的。

在今年年初,Cocos 发布了Creator 30版本, 这个版本融合了几乎所有 Creator 2x 与 Creator 3D 1x 版本的功能,将此前2D和3D两套产品进行合并, 是 Cocos 为开发者提供兼具轻量与重度 游戏 的开发体验、往更引擎一体化建设方向的开始。

到了5月份,Creator 31正式亮相,该版本包含了华为HMS CG Kit团队贡献的延迟渲染管线,以及PhysX 物理后端的支持,意味着光照计算能力和物体运动逻辑都更加逼真写实, 这对于 Cocos 来说是迈向3D旅途的新起点,标志着Creator引擎的计算能力踏上一个新台阶。

v34 的延迟管线 FrameGraph

紧接着6月,随着华为 鸿蒙系统的发布Cocos也迅速升级到Creator 32版本,让开发者搭配HarmonyOS的多设备协同能力, 成为全球首家支持 HarmonyOS 的 游戏 引擎。

华为鸿蒙多设备协同

到了8月份,Creator33版本在2D和3D同时发力,在2D小 游戏 平台启动性能直接提升了60%,促进了小 游戏 产品的买量转化;3D方面完善了物理系统,加强了阴影效果。 这在整体上为 Cocos 在接下来的年度收官版本做了扎实的铺垫。

前段时间,Cocos 终于扯下Creator 34版本的神秘面纱,在这个研发和测试周期都是全年中最长的版本中,Cocos 大量优化了内容生产体验和效率,其中包括新增的动画状态机、光照模型和渲染表现优化、底层的前向和延迟渲染管线也基于FrameGraph和 subpass 进行了重构。 对自身 3D 技术进行了大幅的加强和优化,是 Cocos 引擎发展中里程碑的一步。

以下视频来源于 COCOS,时长 01:27

34版本中最抢眼的新功能要数动画系统Marionette(意为提线木偶)的添加,通过对状态机、状态切换、子状态机、动画混合 等角色动画必要功能的支持,让动画师可以更加方便定义动作顺序,而不必关心底层代码的实现。这从核心上增强了开发者在 游戏 中通过角色叙事的能力。

回顾 Cocos 的这一年,其 在2D应用领域立足脚跟、持续优化的同时,在3D方面的自身突破和长足进步是给到开发者最大的惊喜。作为一款全球性的引擎,二维和三维皆应是主场,对于依然在升级打怪的 Cocos 来说,2021无疑是充满了里程碑和成就解锁的一年。

昼转夜动画演示

2、不止 游戏 ,坐稳出发数字内容世界的新列车

但对于 Cocos 来说,在 游戏 引擎方面的进步只不过是他们今年升级的一部分。如果你仔细观察,就会发现除了 游戏 外,这家有着10年 历史 的数字互动内容开发平台在其他领域的布局也已逐渐成型。

谈到近两年来 游戏 行业相关的热门议题,哪几个关键词会排在队列首位?工业化、多平台、云 游戏 、元宇宙……这些搅动市场新浪潮的风向标都有着共同的特点:预示着万物互联成为不可避免的趋势,以及 对数字内容的开发提出极高的要求。

数字内容的生产从来都离不开技术,而在新形态内容发展的初期,技术更是能起到奠基和领导的作用。在上世纪90年代初期,id Software就通过自己的技术力开启了3D 游戏 的革命时代:其在1992年的作品《德军总部3D》成为第一款有3D FPS 游戏 ,而引擎改良后在次年推出的《毁灭战士》更是以其 革命性的3D效果冲击了整个 游戏 工业的发展进程。

其之后的《雷神之锤》所使用的Quake引擎,则是当时第一款完全支持多边形模型、动画和粒子特效的引擎的3D引擎,这直接催生了整个行业3D 游戏 技术和FPS这个 游戏 类型的急速发展。id Software还通过将引擎面向市场商用, 直接催生了现代“ 游戏 引擎”的概念, 大名鼎鼎的《半条命》和《反恐精英》系列都是使用了该引擎所制作的作品。

雷神之锤(1996)

不难看出, 在工业发展的关键节点技术不仅是驱动创新内容生产的基石,更是解放创作者的未知想象力的钥匙。 而当下即将到来的万物互联时代,就正如当年从2D跃进3D,同样是行业的一个新起点。

Cocos 的联合创始人林顺告诉我们,“数字内容的发展对于立体画面表现力和交互的形态要求都很高, 游戏 引擎在这制作这方面内容是天然的、最适合的工具, 行业的发展趋势对于引擎来说是一个非常巨大的机遇。

正如他所说的,Cocos 引擎凭借其高性能、小包体、可热更的特点,已经广泛“入侵”各种应用场景。

在教育场景下,Cocos 基于引擎能力推出面向教育行业的 Cocos ICE,作为一款无需编码,即可快速上手的互动课件编辑器,同时因为强大的兼容性,其可定制化的特性更是能满足大部分教育机构的需求,获得多家教育领域龙头企业青睐。

Cocos ICE

在VR 方面,Cocos 已经做好相关引擎能力的储备,目前XR的项目可以通过Cocos 引擎以源码的方式来开发,未来将会推出双目渲染技术方向的插件,帮助开发者快速完成3D 游戏 向VR版本的转化。

Cocos 和华为 AR Engine 合作示例 游戏 《AR 指尖战争》

IoT 方面,如今中国多数智能电视的互动界面都是基于 Cocos 开发,在智能手表上也已经实现了虚拟偶像落地的场景;在 车机 方面,Cocos 也已经实现完美适配,在人与人、车与外界的不同场景上实现了功能互动。

这个互动性视频不仅可以从剑侠情缘手游中作为副本进入,也可以在微信小 游戏 上直接体验,任意门的“入口”无处不在。

《剑侠情缘之忘忧酒馆 - 不下线恋人》

林顺表示:“围绕着这些未来趋势, 我们更多的还是做基础的积累,让我们的引擎能更好地去适应未来内容生产。 在工具链上我们可能会继续完善,让开发者在生产的时间、人力上的占用降低成本,是我们今天正在做。”

在已经有着广泛覆盖率的 游戏 和教育领域以外,Cocos 在其他领域也在造路修车,做好了拥抱数字内容世界新形态的准备。

3、在未来,属于 Cocos 的位置

站在内容形态的下一站路口,引擎之间的竞争激烈程度丝毫不比内容制作间的竞争弱。面对这一点,林顺表示在今天虽然引擎的竞争确实很激烈,但是不同的引擎擅长的领域还是有很大不同。

“我觉得对于 游戏 引擎来讲,大家未来共同发展的方向仍然是围绕着如何去承接更多品类的数字内容的开发,如何去降低这些数字内容开发的门槛,去提供更加智能化的工具,让开发者更加高效的生产这些内容,以及让这些内容表现力上升到另外一个纬度。”他说道,“大方向一致的前提下,每个引擎厂商的布局不一样的地方。 Cocos 还是会继续发挥在2D 游戏 、小 游戏 和教育、IoT等方向既有优势,同时在3D原生和其他方向不断突破自己。

而当我们问到在下一个10年,Cocos 打算在整个国内行业中扮演一个怎样的角色时,林顺回答道:

“ Cocos 始终还是围绕着以工具为平台来做的一个定位。无论是 游戏 还是其他行业,我们会以工具为基础来提供服务给所有的开发者,让大家整个内容生产的效率得以提升。我们未来的规划也会围绕着这个目标所展开,同时不断地去完善自己的工具链,让行业的开发者有更好的体验。 无论是今天还是未来,我们一直会是生态的建设者。

据悉 Cocos 引擎团队将于12月23日晚19点半在B站开播,详细解读 v34 的重要更新,现场演示动画系统 Marionette 的功能与使用方法,有兴趣的读者可搜索微信公众号“ 游戏 陀螺”,找到文章点击 [阅读原文] 查看。

首先导出的LUA文件是这样的

箭头指向的位置有个Create函数。就是调用这个函数进行创建。(至于这个参数是什么,后边会讲到)

首先,先将导出的这个文件require进来,进来之后呢,调用create方法,就会返回Cocos创建的Scene了~

代码如下:

1

local csLuaScene = require("Scenelua")create()

然后create 方法返回的结果是一个table,通过csLuaScene['root']来获得创建的Scene,接着replaceScene就可以了!对于“图层”和“节点”也是类似的 *** 作!

最后通过一系列的getChildByName 和 GetChildByTag 获取子节点进行 *** 作就可以了!

啊,对了,获取动画的方式和获取Scene的方式相似 csLuaScene['animation']!

接下来,create函数的那个参数是什么东西呢?

来看这个图 ,我给Button_1添加了一个叫做btn2的Click事件

生成LUA代码之后,能够发现有如下代码段:

这段代码,首先判断callBackProvider是否为空,然后呢,将他的返回值设置为Button_1的Click回调函数。

这样就很明白了。create时候需要传入的参数callBackProvider是一个函数,他的功能是根据传入的3个参数进行判断,最终返回一个函数最为Button(或者其他node)的回调函数!

callBackProvider的三个参数,分别是,当前LUA文件的路径,所绑定的Node(可以通过name或者tag来判断是哪个node),最后是回调函数的名字,通过这三个参数可以很容易的知道是哪个按钮的回调事件,从而返回该按钮所需要的回调函数。

所以,在create时候应该是这样的:

local callBackProvider = function ( path,node,funcName )

if path == "Scenelua" and node:getName()=="Button_1" and funcName =="bnt2" then

local function btnCallback(  node,eventType  )

--TODO

end

return btnCallback

end

end

local csLuaScene = require("Scenelua")create(callBackProvider)

也许大家看第一篇文章时候,注意到 我这里提示了一个错误,版本不兼容。是时候更新到35了!如果不想更新的话,就把35的UI的部分替换过来吧………

标签(空格分隔): 内容创作工作流程

在 场景编辑器 和 节点和组件 文档中,我们介绍了可以通过 变换工具 和编辑 属性检查器 中节点的属性来变更节点的显示行为。这一节我们将会深入了解节点所在场景空间的坐标系,以及节点位置(Position)、旋转(Rotation)、缩放(Scale)、尺寸(Size)四大变换属性的工作原理。

我们已经知道可以为节点设置位置属性,那么一个有着特定位置属性的节点在游戏运行时将会呈现在屏幕上的什么位置呢?就好像日常生活的地图上有了经度和纬度才能进行卫星定位,我们也要先了解 Cocos Creator 的坐标系,才能理解节点位置的意义。

Cocos Creator 的坐标系和 cocos2d-x 引擎坐标系完全一致,而 cocos2d-x 和 OpenGL 坐标系相同,都是起源于笛卡尔坐标系。笛卡尔坐标系中定义右手系原点在左下角,x 向右,y 向上,z 向外,我们使用的坐标系就是笛卡尔右手系。

标准屏幕坐标系使用和 OpenGL 不同的坐标系,和 cocos2d-x 坐标系有很大区别。

在 iOS, Android, Windows Phone 等平台用原生 SDK 开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x 向右,y 向下。

Cocos2d-x 坐标系和 OpenGL 坐标系一样,原点为屏幕左下角,x 向右,y 向上。

世界坐标系也叫做绝对坐标系,在 Cocos Creator 游戏开发中表示场景空间内的统一坐标体系,「世界」就用来表示我们的游戏场景。

本地坐标系也叫相对坐标系,是和节点相关联的坐标系。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点关联的坐标系将随之移动或改变方向。

Cocos Creator 中的 节点(Node) 之间可以有父子关系的层级结构,我们修改节点的 位置(Position) 属性设定的节点位置是该节点相对于父节点的 本地坐标系 而非世界坐标系。最后在绘制整个场景时 Cocos Creator 会把这些节点的本地坐标映射成世界坐标系坐标。

要确定每个节点坐标系的作用方式,我们还需要了解 锚点 的概念

锚点 (Anchor) 是节点的另一个重要属性,它决定了节点以自身约束框中的哪一个点作为整个节点的位置。我们选中节点后看到变换工具出现的位置就是节点的锚点位置。

锚点由 anchorX 和 anchorY 两个值表示,他们是通过节点尺寸计算锚点位置的乘数因子,范围都是 0 ~ 1 之间。(05, 05) 表示锚点位于节点长度乘 05 和宽度乘 05 的地方,即节点的中心。

锚点属性设为 (0, 0) 时,锚点位于节点本地坐标系的初始原点位置,也就是节点约束框的左下角。

锚点位置确定后,所有子节点就会以 锚点所在位置 作为坐标系原点,注意这个行为和 cocos2d-x 引擎中的默认行为不同,是 Cocos Creator 坐标系的特色!

假设场景中节点的结构如下图所示:

当我们的场景中包含不同层级的节点时,我们按照以下的流程确定每个节点在世界坐标系下的位置:

除了上面介绍过的 锚点(Anchor) 之外,节点还包括四个主要的变换属性,下面我们依次介绍。

位置(Position) 由 x 和 y 两个属性组成,分别规定了节点在当前坐标系 x 轴和 y 轴上的坐标

上图中节点 NodeA 位于场景根级别,他的位置是 (507, 354)(可以参考 场景编辑器 背景的刻度显示),其子节点 NodeC 的位置是 (345, 0),可以看到子节点的位置是以父节点锚点为基准来偏移的。

位置属性的默认值是 (0, 0),也就是说,新添加节点时,节点总会出现在父节点的坐标系原点位置。Cocos Creator 中节点的默认位置为 (0, 0),默认锚点设为 (05, 05)。这样子节点会默认出现在父节点的中心位置,在制作 UI 或组合玩家角色时都能够对所有内容一览无余。

在场景编辑器中,可以随时使用 移动变换工具 来修改节点位置。

旋转 (Rotation) 是另外一个会对节点本地坐标系产生影响的重要属性,旋转属性只有一个值,表示节点当前的旋转角度。角度值为正时,节点顺时针旋转,角度值为负时,节点逆时针旋转

在场景编辑器中,可以随时使用 旋转变换工具 来修改节点旋转。

缩放 (Scale) 属性也是一组乘数因子,由 scaleX 和 scaleY 两个值组成,分别表示节点在 x 轴和 y 轴的缩放倍率。

子节点上设置的缩放属性会和父节点叠加作用,子节点的子节点会将每一层级的缩放属性全部相乘来获得在世界坐标系下显示的缩放倍率,这一点和位置、旋转其实是一致的,只不过位置和旋转属性是相加作用,只有缩放属性是相乘,作用表现的更明显。

缩放属性是叠加在位置、尺寸等属性上作用的,修改缩放属性时,节点的位置和尺寸不会变化,但显示节点图像时会先将位置和尺寸等属性和缩放相乘,得出的数值才是节点显示的真实位置和大小。

在场景编辑器中,可以随时使用 缩放变换工具 来修改节点缩放。

尺寸(Size) 属性由 Width(宽度)和 Height (高度)两个值组成,用来规定节点的约束框大小。对于 Sprite 节点来说,约束框的大小也就相当于显示图像的大小。

因此尺寸属性很容易和缩放属性混淆,两者都会影响 Sprite 图像的大小,但他们是通过不同的方式来影响图像实际显示大小的。尺寸属性和位置、锚点一起,规定了节点四个顶点所在位置,并由此决定由四个顶点约束的图像显示的范围。尺寸属性在渲染 九宫格图像(Sliced Sprite) 时有至关重要的作用。

而缩放属性是在尺寸数值的基础上进行相乘,得到节点经过缩放后的宽度和高度。可以说在决定图像大小时,尺寸是基础,缩放是变量。另外尺寸属性不会直接影响子节点的尺寸(但可以通过 对齐挂件(Widget) 间接影响),这一点和缩放属性有很大区别。

在场景编辑器中,可以随时使用 矩形变换工具 来修改节点尺寸。

以上就是关于《从Cocos到Unity》- 2.UI-UGUI-精灵全部的内容,包括:《从Cocos到Unity》- 2.UI-UGUI-精灵、如何测试一个cocos的粒子文件和动画文件一起播放的效果、cocos主程要多久等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9718650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存