Cocos合成大西瓜案例-中

2,225 阅读2分钟

「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

【承接上篇的启动页面和可爱动画内容】

👉实践过程

😜核心脚本

然后我们创建两个脚本(ScriptStart和ScriptMaxScore)

image.png

ScriptStart脚本包含两个方法,分别是加载下一个场景以及结束游戏,上面的两个按钮调用,然后在onLoad方法中读取分数信息,如果有则读取对应的如果没有则设置为0(防止ScriptMaxScore脚本读取值为空)

protected onLoad() {
    console.log("ScriptStart的onLoad");
    //数据加密的考虑只能是用服务器最好
    if (localStorage.getItem(ScriptStatic.MaxScore) == null) {
        console.log("没有最高分")
        //为什么没有的时候要在这设置呢
        localStorage.setItem(ScriptStatic.MaxScore, "0");
    } else {
        console.log("有最高分", localStorage.getItem(ScriptStatic.MaxScore))
    }
}
 
//开始游戏-加载下一个场景
GameStart() {
    director.loadScene("scene_game");
}

//结束游戏
GameExit() {
    game.end;
}

image.png

附注:脚本的生命周期和Unity相似,都是走完所有脚本的onLoad再往下走所有脚本的onEnable接着是所有脚本的start,以此类推。他们相同的生命周期函数执行顺序又受层级管理器中的顺序影响。

image.png

分数我们使用艺术字显示,设置艺术字有两种方式:

一种是直接生成对应的位图字体文件

一种是精灵为一个预制体代码创建多个给每个设置对应的图片即可

我们使用的是第一种方法。

创建文本位图字体(fnt和png两个文件)-不知道怎么创建的可以私信我。

然后将给字体赋值给Label组件的Font属性,记得修改CacheMode,对了顺便看看Layer是否正确,小空在这被坑了一次(一直不显示但是感觉哪都没错,原来是层级低被背景遮盖住了。)

image.png

image.png

接着我们给分数节点弄上脚本ScriptMaxScore

start() {
    console.log("ScriptMaxScore的start");
    //读取保存的分数数据,这个一是在Start的onLoad中设置 一是在游戏结束的时候设置
    let score = localStorage.getItem(ScriptStatic.MaxScore)
    //设置分数艺术字
    let LabelScore = this.node.getComponent(Label);
    if (LabelScore != null) {
        LabelScore.string = score + "".toString();
    } else {
        console.log("获取文本节点为空")
    }
}

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢欢迎点赞👍收藏🌟留言📝