cocos creator主程入门教程(一)—— 初识creator

四邑隐侠,本名关健昌,10年游戏生涯,现隐居四邑。本系列文章以TypeScript为介绍语言。

我们在cocos creator新建一个Hello TypeScript项目,都会有一个assets/Scene/helloworld.fire文件。使用cocos creator开发游戏时,项目可以只有一个.fire文件。一般地,我会把这个文件夹改名为assets/scene,下面只有main.fire文件:assets/scene/main.fire。

双击main.fire文件,在层级管理器可以看到它的结构,

根节点是一个Canvas,点击Canvas节点,在右边的属性面板可以看到Canvas组件有Design Resolution属性,作为屏幕适配的尺寸。例如设置为1334x750,那么美术出资源时一屏界面的大小就是这个尺寸。不同的手机屏幕引擎自动做等比例缩放,具体缩放倍数,当勾选Fix Width表示界面的宽缩放到跟实际屏幕一样,当勾选Fix Height表示界面的高缩放到跟实际屏幕一样。另外一边相应等比例缩放,可能小于屏幕大小而出现黑边,也可能大于屏幕而被裁剪,这些可能都不是我们想要的,后面会说怎么解决。

cocos creator2.1.0版本默认Canvas下面有Main Camera子节点,其他子节点是模版示例,直接删除。一般我还会给Canvas添加两个子节点,一个sceneLayer作为场景根节点,一个popupLayer作为弹窗根节点。因为场景我们宁愿超框被裁剪,也不希望看到黑底,弹窗则希望能完整显示,但引擎本身是统一处理的。分开两个不同的根节点,在加载后根据屏幕大小单独调整场景根节点sceneLayer的缩放让他铺满屏幕。对于微信小游戏之类,单独调整下移弹窗根节点popupLayer,避免与微信小游戏的关闭按钮重合。

然后,就可以开始写入口脚本,把它挂到Canvas节点。cocos creator采用组件模式,每个节点都可以挂载不同的组件,包括自己开发的脚本组件。新建一个StartCtrl.ts,所有跟界面节点关联的脚本类都继承自cc.Component,由于creator是使用装饰器语法来检查属性的,所以要用到@property和@class装饰器,其中@property用于声明编辑器可以检查到的属性,我们可以声明两个属性,sceneLayer和popupLayer属性,用于关联界面的场景根节点和弹窗根节点,@class用于声明编辑器可以挂到节点的类。cc.Component定义了一系列生命周期方法,在节点不同生命周期会调用。下面是入口脚本的简单实现。

/**
 * auth: 关健昌
 * date: 2018-11-17
 * desc: 游戏入口
 * modify:
 */

const {ccclass, property} = cc._decorator;

@ccclass
export default class StartCtrl extends cc.Component {

    @property(cc.Node)
    popupLayer: cc.Node = null;

    @property(cc.Node)
    sceneLayer: cc.Node = null;

    start () {    // TODO Add Start Code
    }
}

在编辑器选择Canvas节点,在属性面板点击“添加组件”,选择用户脚本组件,选择StartCtrl,拖sceneLayer和popupLayer两个节点到属性面板对应属性,这样就关联好入口脚本。启动游戏后,Canvas的生命周期就会触发StartCtrl里对应的方法,StartCtrl里的sceneLayer和popupLayer属性已被赋值为Canvas对应的子节点。后面我们会继续讲解如何使用这两个属性对界面进行分层管理。

现在,我们先看看怎样制作界面。我们可以把每一个界面都做成一个prefab预制体。同样在assets目录下,会看到一个叫Texture的目录,先把它改成resources,因为cocos加载资源时对resources有特殊处理,后面会讲解。在这个目录下再建一个目录叫prefabs,assets/resources/prefabs专门用来存放界面的预制体。

制作预制体的方法很简单。先双击scene/main.fire打开,在Canvas节点右键新建空白节点,属性面板将新节点名字改为TestView,拖动该节点到资源管理器面板的assets/resources/prefabs目录。这样一个预制体TestView就生成了,这时可以在main.fire的Canvas节点中删除TestView这个子节点,我们已经不需要这个子节点。

在资源管理器目录找到assets/resources/prefabs目录,双击TestView.prefab打开这个预制体,可以看到里面是空的,可以先设置根节点的Size,这就是这个界面的设计大小。然后可以开始用cocos的ui组件、渲染组件布局界面,cocos的ui组件、渲染组件使用参看cocos官方文档。

然后,同样我们可以开始写这个界面的脚本TestViewCtrl.ts,控制界面逻辑和刷新。这个脚本还是继承cc.Component,定义对应的cc.Label等类型的属性,这样就可以把界面的元素关联到脚本,通过脚本来刷新。

/**
 * auth: 关健昌
 * date: 2018-11-17
 * desc: 测试界面
 * modify:
 */

const {ccclass, property} = cc._decorator;

@ccclass
export default class TestViewCtrl extends cc.Component {

    @property(cc.Label)
    label: cc.Label = null;// LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    start () {    this.label.string = "hello";
    }

    // update (dt) {}
}

打开回刚才那个预制体,选择根节点,在属性面板选择添加组件TestViewCtrl,并将对应ui组件拖到脚本组件的属性上进行关联,这样我们就可以通过TestViewCtrl控制这个界面了。

要显示这个界面,首先要加载prefab。cocos提供了cc.loader.loadRes接口,类型传cc.Prefab,加载成功后通过cc.instantiate接口把预制体实例出一个cc.Node,cocos的界面布局是基于组合模式的一棵树,cc.Node通过addChild把其他cc.Node添加到界面。所以,我们通过popupLayer.addChild把这个界面放到屏幕,这些代码可以写在入口脚本StartCtrl的start方法里。可以通过cc.Node.getComponent获取TestViewCtrl的实例来操作界面。不过,我一般是通过cc.Component的生命周期和消息来实现界面更新,降低耦合,后面会详细介绍这种方式。

/**
 * auth: 关健昌
 * date: 2018-11-17
 * desc: 游戏入口
 * modify:
 */

const {ccclass, property} = cc._decorator;

@ccclass
export default class StartCtrl extends cc.Component {

    @property(cc.Node)
    popupLayer: cc.Node = null;

    @property(cc.Node)
    sceneLayer: cc.Node = null;

    start () {
    cc.loader.loadRes("prefabs/TestView", cc.Prefab, (err, result) => {
                if (!err) {
                    return;
                }

                let prefab = result as cc.Prefab;
                let view = cc.instantiate(prefab);          // let ctrl = view.getComponent(TestViewCtrl);          this.popupLayer.addChild(view);
            });
    }
}

 

现在我们已经知道怎样建立游戏入口,怎样制作、加载、显示界面,下一章将讲解怎样对弹窗分层管理。

原文地址:https://www.cnblogs.com/niudanshui/p/10203449.html

时间: 2024-10-28 19:20:55

cocos creator主程入门教程(一)—— 初识creator的相关文章

cocos creator主程入门教程(五)—— 日志系统

五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇介绍日志系统的设计.一般我们开发一个demo,只会简单的用cocos提供的cc.log打印下日志,方便调试功能.但是要开发一个商业项目,还要考虑怎么收集日志,方便产品上线后定位线上问题.如果线上产品运行出异常时能把当时的上下文日志发到一个文件服务器,有利于分析异常的原因.例如如果有通信数据日志,可以先判断是后端返回数据异常,还是前端逻辑出问题.因此,我会在项目里设计一个统一的日志系统,游戏里所有

cocos creator主程入门教程(四)—— 网络通信

五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 前面已经介绍怎样加载资源.管理弹窗.开发一个网络游戏,难免要处理网络通信.有几点问题需要注意: 1.服务端为了快速开发可能前期使用http通信,后面再改成websocket/socket. 2.同时存在http和websocket/socket通信 3.通信数据格式可能需要随时替换为json或protocol buffer,可能需要添加额外头部. 4.在新手引导里使用本地数据做模拟,请求不需要发送给后

cocos creator主程入门教程(八)—— 代码结构

五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇简单介绍下代码结构,清晰的代码结构更有利于团队对项目的理解和维护. 1.前面我们介绍了一系列基础功能封装,这部分内容可以被不同的游戏重用.这一部分代码都可以放到framework目录下. 2.游戏业务代码统一放到game目录下 3.平台sdk接入代码放到channel目录下 4.数据上报的sdk接入代码放到report目录下. StartCtrl是项目的入口,负责项目的初始化,包括渠道sdk.数

cocos creator主程入门教程(十一)—— 行为树

五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 本篇介绍行为树.在RPG游戏中,地图上存在一些剧情NPC,不同的剧情下,NPC的行为会不一样.这些NPC的行为可以通过行为树进行管理.行为树是在固有行为集下,进行行为抉择的AI算法.行为树包括数据解析.逻辑控制.行为执行三部分. 行为树数据由节点组成,每个节点有对应的行为类型.参数.返回值.节点有一个子节点数组,通过这种方式将节点组织成树状. export class BehaviorNode { p

Unix/Linux环境C编程入门教程(40) 初识文件操作

?? 1.函数介绍 close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include<unistd.h> 定义函数 int close(int fd); 函数说明 当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源.参数fd为先前由open()或creat()所返回的文件描述词. 返回值 若文件顺利关闭则返回0,发生错误时返回-1. 错误代码 EBADF 参数fd

git 入门教程之初识git

初识 git git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 背景 我们都知道,Linus 在1991年创建了开源的linux系统,随着不断发展壮大,目前已发展成为最大的服务器系统软件. Linus 虽然创建了 linux,但 linux 的发展壮大是靠全世界热心的志愿者参与贡献的,这么多人在世界各地为linux系统编写代码,那么linux的代码是如何管理呢? 事实上,在2002年以前,世界各地的志愿者直接将源代码通过 diff 的方式发送给Linus,然后由Li

WebGL入门教程(二)-webgl绘制三角形

前面已经介绍过了webgl,WebGL入门教程(一)-初识webgl(http://www.cnblogs.com/bsman/p/6128447.html),也知道了如何绘制一个点,接下来就用webgl画出一个三角形. 效果图: 在WebGL入门教程(一)-初识webgl中,知道如何绘制一个点 //绘制一个点 gl.drawArrays(gl.POINTS, 0, 1); 但是图形是有多个点组成,那么就应该考虑如何绘制多个点,WebGL提供了一种很方便的机制,缓冲区对象(buffer obje

WebGL入门教程(四)-webgl颜色

前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canvas 2.获取画布 canvas 的 ID 3.获取WebGL 4.编译着色器 5.使用缓冲区对象向顶点传入多个顶点数据 6.绘制图像 以上1~3参考:http://www.cnblogs.com/bsman/p/6128447.html 4.编译着色器 改顶点着色器,片着色器 //顶点着色器程序 v

一个不错的Cocos 1.6动画编辑器入门教程

Cocos Studio角色动画入门 在这里:http://cn.cocos2d-x.org/tutorial/index?type=cocos_studio 作者:吕明亮(QQ:623359743) 尽管时间已晚,但还是坚持看完.很明显,他是一位美工,而且具有实战制作经验.有兴趣的朋友可以去看看.我认为无论是作为需要角色动画制作的开发者,还是专业的COCOS动画制作新手,这都是一部相当优秀完美的入门级动画教程. 唯一的遗憾是,本教程针对COCOS 1.6,而不是针对最新的COCOS 2.X!