cocostudio 2.0版本爬坑手记,cocostudio2.0

  次阅读 作者:智能小宝 来源:互联网 2015-09-28 15:29 我要评论(0)

cocostudio 2.0版本爬坑手记,cocostudio2.0

最近才开始接触cocostudio,主要是用来做UI。不想过多吐槽了,只想说一点,备受推崇、重金研发的一个编辑器还比不上Unity中的一个插件。之前我感觉NGUI很难用,但那是跟DF GUI相比,现在感觉NGUI实在是太方便、太强大了。

1、基础使用:

在CocoStudio中编辑界面,然后导出资源,导出后会有资源目录和csb文件。我们使用时直接加载这个csb文件就可以了。它是protobuffer序列化的,CocoStudio2.0版本暂不支持json格式。

lua加载代码

local node = cc.CSLoader:createNode(file)-- TODO 貌似是全屏的

local panel = node:getChildByName(panel)-- 对话框panel

scene:addChild(node)

2、多分辨率处理:

cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(1280, 720, cc.ResolutionPolicy.FIXED_HEIGHT)

通过这个来设置设计分辨率,设计分辨率就是在制作UI和游戏内容时的默认分辨率,这个一旦决定下来就不会轻易动了。最后一个参数决定了实际屏幕分辨率不同时窗口的缩放。具体是SHOW_ALL还是NO_BORDER还是FIXED_HEIGHT看实际需求。事实上哪个都不能完美的解决我的实际问题。

一般来说,非全屏的UI可以不用关心多分辨率,里面的控件也不需要关心锚点,相对位置什么的,因为界面大小是固定的(无论是960x640还是1024x768界面都是那么大)。而一些需要全屏处理的UI内容就要特殊处理了,比如主界面。一般来说主界面的需求是左上角显示头像相关内容,右下角是一系列按钮,右上角也会有一系列按钮。这个时候在cocostudio中只用一个界面就显得力不从心了。 我的处理方法是把这些内容划分成三个panel,分别加载这三个panel,然后再根据对应的锚点关系把panel放置在争取的位置(比如锚点在右上角的,就把对应panel的anchor

point设置成1,1,然后把它的坐标设置成winSize.width winSize.height)。

全屏拉伸的背景图片也需要特殊处理下,一般来说我们的需求是背景图片不变形的拉伸(保持高宽比),并铺满整个屏幕,不留黑边。

总结一下,感觉是这样子的,无法使用cocostudio完成整个ui系统的控制,界面的显示位置还是需要上层逻辑代码来控制。虽然不是非常麻烦,但是总归感觉是比较low的。当然,也可能是我没有掌握好对应技巧,欢迎批评指正。

3、Node:getChildByName是非递归的:

直接通过getChildByName是非递归的,无法直接通过一个rootNode来获取子控件。cocos2d-x v3.2提供了这样一个函数来解决这个问题:enumerateChildren。使用方法如下:

function util.ui.getControl(root, name)

local control;

root:enumerateChildren('//' .. name, function(ret)

control = ret;

return false;

end);

return control;

end这个函数使用方式略显怪异,但是功能还是比较强大的,可以指定路径,也可以模糊查找,具体可以参考源代码中函数的注释

4、Panel默认是颜色填充的,而cocos2d-x v3.3版本貌似还是有bug,panel里面直接选择Fill为None,在实际游戏中依然会有填充色,必须要手动把Opacity的值设置为0才行。而CocoStudio和其自带的程序是没有这个问题的。

5、坐标设置可以是像素也可以是相对于父窗口的百分比

这个不算坑,估计原本他们也想用这套系统来替代锚点的布局系统。不过略显鸡肋,因为大多数对话框只需要配置好绝对的像素坐标就足够了,而当需要自动布局适应多分辨率的时候,这套百分比相对布局依然无法正常适配。也就是说正常的时候怎么都正常,不正常的时候怎么都不正常。

6、不提供打包功能了,导入资源的时候就需要打包好

这个也不算坑,本来统一化的打包就存在一些恶心的问题,比如背景图或一些比较大的图片不应该打包,但是也一并打包进来了。现在的方式更加自由。 我还没有尝试texture packer打包的兼容性,我猜想会存在这样的问题,我使用原始图片配置好的界面,当我换成plist后,所有的界面图片都要重新指定。 如果真是这样的话,也无法过于苛责,只不过显得不够人性化。

7、控件不够全,并且功能比较弱

比如三态Button,单选Button组,Tab标签等等功能都没有,而我想直接通过设置Button状态来控制其图片样式也做不到。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...