데이터 베이스 MySQL 튜토리얼 cocostudio 2.0版本爬坑手记

cocostudio 2.0版本爬坑手记

Jun 07, 2016 pm 03:33 PM
시작 메모 버전

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

        最近才开始接触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、控件不够全,并且功能比较弱

      当然,这些并不是说真的做不到,只不过需要额外写一些代码来处理。相比起来NGUI和DF GUI乃至Unity新推出的uGUI都比它强多了。


8、导入图片资源比较混乱

      导入的图片资源一开始会散列在编辑器资源窗口中(资源可能来自不同的文件夹),然后可以拖动资源到我们编辑器中创建好的目标文件夹。这个操作会移动实际的文件。而如果我们一开始就把资源放在目标文件夹中就麻烦了。 与其这样,还不如像eclipse一样,按F5直接刷新资源,更近一步就是像Unity一样,自动检测文件变化。

      导入图片资源时无法直接把图片拖到目标文件夹,必须要两步操作。

      删除资源会重置控件中的图片属性到默认值,如果一不留神删了资源文件夹就over了,所有的控件都要重新指定一下图片内容。


9、拖动控件,改变其父节点的时候,坐标没有重新计算,导致一旦改变控件的父节点,控件就不知道飞哪里去了,必须要重新调整坐标。  据说Flash也这样,但是至少Unity不是这样,而且Unity操作起来非常方便。


10、点选控件很让人恼火,如果控件的遮挡关系一复杂,就很容易让人点到错误的控件。 Unity的NGUI虽然有的时候也不是很方便,但感觉还是方便一点点,而且它的属性值是可以通过拖动操作来微调的,这个要比只能填数值要方便多了。


11、精灵对应的是cc.Sprite,图片对应的是ccui.ImageView。ImageView维护的是一个九宫格图片(如果不勾选这个选项,图片可以正常显示,但是使用的依然是这个类)。理论上cc.Sprite效率要高一些。但是由于Sprite不是Widget,不支持addTouchEventListener方法。所以想要处理点击的话,就必须使用图片控件,并且要设置setTouchEnabled为true。


12、偶尔会因为某些bug,导致csd文件被清空。所以最好建立个svn或者git仓库,时常保存一下。否则万一中招就悲剧了。


13、UI动画的使用方式:

self.buttonPanelAnimation = cc.CSLoader:createTimeline("GUI.csb"); 
self.buttonPanel:runAction(self.buttonPanelAnimation); 
self.buttonPanelAnimation:gotoFrameAndPlay(0, 25, false);
로그인 후 복사
         传入的文件就是GUI文件,动画制作的关键帧信息是保存在一起的。所以如果有多段动画的话,要分开帧段单独制作。比如菜单的收缩和展开就需要分两段动画来制作,播放的时候通过帧来控制播放哪段动画



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

numpy 버전을 빠르게 확인하는 방법 numpy 버전을 빠르게 확인하는 방법 Jan 19, 2024 am 08:23 AM

Numpy는 Python의 중요한 수학 라이브러리로 효율적인 배열 연산과 과학적인 계산 기능을 제공하며 데이터 분석, 기계 학습, 딥 러닝 및 기타 분야에서 널리 사용됩니다. numpy를 사용할 때, 현재 환경에서 지원하는 기능을 확인하기 위해 numpy의 버전 번호를 확인해야 하는 경우가 많습니다. 이 기사에서는 numpy 버전을 빠르게 확인하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 방법 1: numpy와 함께 제공되는 __version__ 속성을 사용하세요. numpy 모듈은 __과 함께 제공됩니다.

메이븐 버전 확인하는 방법 메이븐 버전 확인하는 방법 Jan 17, 2024 pm 05:06 PM

Maven 버전을 확인하는 방법: 1. 명령줄을 사용합니다. 2. 환경 변수를 확인합니다. 3. IDE를 사용합니다. 4. pom.xml 파일을 확인합니다. 자세한 소개: 1. 명령줄을 사용하여 명령줄에 "mvn -v" 또는 "mvn --version"을 입력한 다음 Enter를 누르면 Maven 버전 정보와 Java 버전 정보가 표시됩니다. 변수, 일부 시스템에서는 환경 변수를 확인하여 Maven 버전 정보를 찾고, 명령줄에 명령을 입력한 다음 Enter 키를 누르는 등의 작업을 수행할 수 있습니다.

Linux에서 컬 버전을 업데이트하는 방법에 대한 튜토리얼입니다! Linux에서 컬 버전을 업데이트하는 방법에 대한 튜토리얼입니다! Mar 07, 2024 am 08:30 AM

Linux에서 컬 버전을 업데이트하려면 다음 단계를 따르세요. 현재 컬 버전을 확인하세요. 먼저 현재 시스템에 설치된 컬 버전을 확인해야 합니다. 터미널을 열고 다음 명령을 실행합니다. 컬 --version 이 명령은 현재 컬 버전 정보를 표시합니다. 사용 가능한 컬 버전 확인: 컬을 업데이트하기 전에 사용 가능한 최신 버전을 확인해야 합니다. 최신 버전의 컬을 찾으려면 컬의 공식 웹사이트(curl.haxx.se)나 관련 소프트웨어 소스를 방문하세요. 컬 소스 코드 다운로드: 컬 또는 브라우저를 사용하여 선택한 컬 버전의 소스 코드 파일(일반적으로 .tar.gz 또는 .tar.bz2)을 다운로드합니다.

pip 버전을 업데이트하는 간단한 단계: 1분 안에 완료 pip 버전을 업데이트하는 간단한 단계: 1분 안에 완료 Jan 27, 2024 am 09:45 AM

1분 안에 완료: pip 버전을 업데이트하려면 특정 코드 예제가 필요합니다. Python의 급속한 발전으로 pip는 Python 패키지 관리를 위한 표준 도구가 되었습니다. 그러나 시간이 지남에 따라 pip 버전은 지속적으로 업데이트됩니다. 최신 기능을 사용하고 가능한 보안 취약점을 수정하려면 pip 버전을 업데이트하는 것이 매우 중요합니다. 이 글에서는 1분 안에 pip를 빠르게 업데이트하는 방법을 소개하고 구체적인 코드 예시를 제공합니다. 먼저 명령줄 창을 열어야 합니다. Windows 시스템에서는 다음을 사용할 수 있습니다.

Kirin 운영 체제 버전과 커널 버전을 확인하세요. Kirin 운영 체제 버전과 커널 버전을 확인하세요. Feb 21, 2024 pm 07:04 PM

Kylin 운영 체제 버전 및 커널 버전 확인 Kirin 운영 체제에서 시스템 버전 및 커널 버전을 확인하는 방법을 아는 것은 시스템 관리 및 유지 관리의 기초입니다. Kylin 운영 체제 버전을 확인하는 방법 1: /etc/.kyinfo 파일을 사용하여 Kylin 운영 체제 버전을 확인하려면 /etc/.kyinfo 파일을 확인하세요. 이 파일에는 운영 체제 버전 정보가 포함되어 있습니다. 다음 명령을 실행합니다: cat/etc/.kyinfo 이 명령은 운영 체제의 자세한 버전 정보를 표시합니다. 방법 2: /etc/issue 파일 사용 운영 체제 버전을 확인하는 또 다른 방법은 /etc/issue 파일을 보는 것입니다. 이 파일은 버전 정보도 제공하지만 .kyinfo 파일만큼 좋지 않을 수 있습니다.

설치된 Oracle 버전을 쉽게 확인하는 방법 설치된 Oracle 버전을 쉽게 확인하는 방법 Mar 07, 2024 am 11:27 AM

설치된 Oracle 버전을 쉽게 확인하려면 특정 코드 예제가 필요합니다. 기업 수준의 데이터베이스 관리 시스템에서 널리 사용되는 소프트웨어로 Oracle 데이터베이스에는 다양한 버전과 설치 방법이 있습니다. 일상 업무에서 우리는 해당 운영 및 유지 관리를 위해 설치된 Oracle 데이터베이스 버전을 확인해야 하는 경우가 많습니다. 이번 글에서는 설치된 오라클 버전을 쉽게 확인하는 방법과 구체적인 코드 예시를 소개하겠습니다. 방법 1: Oracle 데이터베이스의 SQL 쿼리를 통해 다음을 수행할 수 있습니다.

PHP 버전 NTS의 의미와 차이점 해석 PHP 버전 NTS의 의미와 차이점 해석 Mar 27, 2024 am 11:48 AM

PHP 버전 NTS의 의미와 차이점 PHP는 웹 개발 분야에서 널리 사용되는 널리 사용되는 서버 측 스크립팅 언어입니다. PHP에는 ThreadSafe(TS)와 Non-ThreadSafe(NTS)라는 두 가지 주요 버전이 있습니다. PHP 공식 웹사이트에서는 PHPNTS와 PHPTS라는 두 가지 PHP 다운로드 버전을 볼 수 있습니다. 그렇다면 PHP 버전 NTS는 무엇을 의미합니까? TS버전과 차이점이 뭔가요? 다음,

대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 Apr 23, 2024 pm 03:28 PM

Llama3에 대해 새로운 테스트 결과가 공개되었습니다. 대형 모델 평가 커뮤니티 LMSYS가 공개한 대형 모델 순위 목록에서 Llama3는 5위에 올랐으며, 영어 부문에서는 GPT-4와 함께 공동 1위를 차지했습니다. 다른 벤치마크와는 그림이 다릅니다. 이 목록은 모델 간 1:1 대결을 기반으로 하며, 네트워크 전체의 평가자들이 각자의 제안과 점수를 내립니다. 결국 Llama3가 5위를 차지했고, GPT-4와 Claude3 Super Cup Opus의 세 가지 버전이 그 뒤를 이었습니다. 영어 싱글 목록에서는 Llama3가 Claude를 제치고 GPT-4와 동점을 기록했습니다. 이 결과에 대해 Meta의 수석 과학자 LeCun은 매우 기뻐했으며 트윗을 통해 다음과 같이 말했습니다.

See all articles