Cocos Creator TypeScript 套牛游戏(可微信小游戏)

Cocos Creator微信小游戏开发:解决‘找不到名称wx‘报错与API兼容 在跨平台游戏开发中,TypeScript的静态类型检查是提升代码质量与开发效率的核心机制。其原理是通过类型定义文件在编译阶段进行接口验证,确保代码的严谨性。这一技术价值在于能提前发现潜在的类型错误,为大型工程提供可靠保障。当应用于微信小游戏这类特定平台时,开发环境与运行环境的差异会导致类型系统无法识别平台专属API(如wx对象),从而引发编译错误。本文聚焦于Cocos Creator引擎,深入解析如何通过安装官方类型定义包(@types/wechat-minigame)和配置tsconfig.json,从根 阅读详情

视频操作地址:https://www.bilibili.com/video/BV1NN4y1V7Jy/?vd_source=0a0b591838e1a4cda6ec55da0e1c9019

源码地址:https://gitee.com/OnlyOneW/cocos-study/tree/master/cocos-cow

0 前提

cococs官方脚本指南
已安装Cocos Creator 3.5.2

1 新建2D项目

2 新建文件夹

在资源管理器中新建文件夹用来保存对应的资源

  • scenes : 保存场景
  • scripts : 保存脚本资源
  • res : 保存图片等资源
  • framework : 保存自定义类文件
  • clips : 保存动画文件
  • prefacs : 保存自定义预制文件

3 拖入图片等资源至res文件夹

会提供资源文件:res下的res-cow

4 搭建主页面

    1. 项目,项目设置里,调整尺寸为竖屏 (适配屏幕高度):640*960,
    1. 选中层级管理器,保存场景至,scenes文件夹下,命名:Main (ctrl+s 保存)
    1. 搭建背景
      新建2D对象,sprite(精灵):spt_bg
      设置背景图、尺寸:640*960 (默认的)
    1. 搭建按钮
      在spt_bg下,新建UI组件,Button(按钮):btn_capture
      删除btn_capture下的Label
      设置4种状态下的图片:初始、按下,设置给的图片,其余2个删掉
      设置大小:173*129
      拖动到合适位置
    1. 搭建牛儿
      把第一张牛儿图片拖到层级管理器spt_bg下,重命名为:cow

5 奔跑的牛

5.1 代码实现

在framework新建TypeScript,命名:CowSkin

  1. 牛的皮肤类
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('CowSkin')
export class CowSkin  {
    
	@property(cc.SpriteFrame)
	public cows : [cc.SpriteFrame] = [];
}

在scripts新建TypeScript,命名:cow
2. 牛的类型数组

import { CowSkin } from '../framework/CowSkin';
@property(CowSkin)
public cow_sets : [CowSkin] = [];


private _intervalTime = 0;
private _randomType = Math.floor(Math.random()*3);
  1. update回调函数实现帧动画,更换皮肤
update(deltaTime: number) {
		let dt = deltaTime ;
        // 间隔时间
        this._intervalTime += dt;
        let index = Math.floor(this._intervalTime / 0.2);
        index = index%3;
        // 获取一种牛的类型
        let cowSet = this.cow_sets[this._randomType];
        
        // 获取精灵组件
        let sprite = this.node.getComponent(cc.Sprite);
        sprite.spriteFrame = cowSet.cows[index];
    }

5.2 定义一个数组实现奔跑动画

在clips 文件夹下新建动画剪辑:runClip,层级管理器,选中cow,选择动画编辑器,关联新建的runClip文件,编辑动画,设置播放模式,加入尾帧事件,runCallback

cow.ts加入下面函数:

runCallback() {
	    cc.log("一个轮回结束!");
	    this._randomType = Math.floor(Math.random()*3);
	}

选择Play on load

保存

退出动画编辑

5.3 属性检查器按顺序拖入图片

层级管理器,选中cow,关联cow.ts,设置参数,并按顺序拖入图片

5.4 将整个cow节点作为预制体

把cow节点拖到prefabs文件夹下,删除cow节点,把cow预制节点,拖到spt_bg下

选择Play on load

至此随机不同种的牛奔跑,已实现

6 新建game.ts

新建game.ts当做全局脚本文件,挂载到Canvas下

7 套绳

拖动套绳图片:rope,至背景图片spt_bg下,默认不显示

7.1 改锚点

    1. 改预制体cow的锚点

选中,选矩形变化,移至牛头下,用于方便判断牛头是否套住,删除原来的cow,重新拖一下

    1. 调整绳子的锚点至,圆圈中央

7.2 game.ts新建属性

@property(cc.Node)
public rope_node : cc.Node = null;


@property(cc.Node)
public cow_ins : cc.Node =null;


@property(cc.SpriteFrame)
public rope_imgs : [cc.SpriteFrame] = [];


@property(cc.Prefab)
public cow_prefab : cc.Prefab = null;

@property
public time  = 0;

private _mainScene = 'Main';

并在Canvas里绑定

  • rope_node(rope)
  • cow_ins(cow)
  • rope_imgs(4张绳子图片按顺序拖动)
  • cow_prefab(cow预制体)
  • time(60)

保存

注:此处容易忽略初始化绑定

7.3 按钮事件绑定代码,

start() {
		
		let btn_capture_node = cc.find("Canvas/spt_bg/btn_capture");
				
		btn_capture_node.on(NodeEventType.TOUCH_START, this._touchStart_btn_capture, this);
		
    }

并定义

_touchStart_btn_capture (touch: Touch, event: EventTouch) {
		
		
 }

具体请见最后

8 计分器和倒计时

8.1 第一步:界面添加Label

  • 分数显示
    在spt_bg下,新建2D对象,Label(文本):lb_score,来显示得分
    设置初始值 : Score:0
    设置大小 : 50
    拖动到合适位置

  • 倒计时
    在spt_bg下,新建2D对象,Label(文本):lb_count_down,来显示倒计时
    设置初始参数:60s
    设置大小 : 50
    并添加位图字体样式和字体颜色:#EB78E6
    拖动到合适位置

8.2 第二步:用位图字体让显示更美观

去掉勾选:UseSystemFont
拖入已备好的字体资源,至Font

8.3 第三步:编写逻辑代码

此步片段代码可忽略,直接查看总代码

  • 分数显示
start () {
        // 定义初始化得分为0
        this.scoreNum = 0;
}
    
// 捕捉成功,分数+1
this.scoreNum++;
let lb_score = cc.find("Canvas/spt_bg/lb_score").getComponent(cc.Label);
lb_score.string = "Score: " + this.scoreNum;
  • 倒计时
start () {
    // 获得计时器组件
    let countDownLabel = cc.find("Canvas/spt_bg/lb_count_down").getComponent(cc.Label);
    let time = 60;
    // 倒计时
    this.schedule(function () {
        time--;
        countDownLabel.string = "Time: " + time + " s";
    },1);
},

9 背景音效

9.1 导入模块

import { AudioSource, assert} from 'cc';

9.2 添加组件:AudioSource

在Canvas里,添加组件 按钮,选择 Audio -> AudioSource

设置文件
设置播放方式

9.3 属性

@property(cc.AudioClip)
public audio_clip : cc.AudioClip = null;
	
@property(AudioSource)
public audioSource: AudioSource = null!;

在Canvas里绑定属性 audio_clip

9.4 初始化audioSource属性

start() {
	// 获取 AudioSource 组件
	const audioSource_set = this.node.getComponent(AudioSource)!;
	// 检查是否含有 AudioSource,如果没有,则输出错误消息
	assert(audioSource_set);
	// 将组件赋到全局变量 audioSource 中
	this.audioSource = audioSource_set;
}

9.5 播放套中音效

// 音效
this.audioSource.playOneShot(this.audio_clip, 1);

10 粒子

10.1 导入模块

import { ParticleSystem2D} from 'cc';

10.2 新建ParticleSystem2D(粒子)

在rope下,新建2D对象,ParticleSystem2D(粒子):pc2d_fireworks

10.3 设置粒子参数

不勾选 PlayOnLoad
勾选 Custom
设置 SpriteFrame

10.4 显示粒子效果

套中牛,显示粒子效果

// 粒子
let pc2d_fireworksNode = cc.find("Canvas/spt_bg/rope/pc2d_fireworks");
this.fireworks = pc2d_fireworksNode.getComponent(ParticleSystem2D)
this.fireworks.resetSystem()

11 最终成就系统

倒计时为0时游戏结束,并根据玩家的最终得分显示成就;比如小于等于3分就是套牛青铜,大于三分小于6分就是套牛高手,大于6分以上就是套牛王者。

11.1 制作一个显示用的弹窗

包含一个关闭按钮,标题和称号。

  • spt_result
    Canvas下,新建2D对象,sprite(精灵):spt_result
    设置背景图、尺寸、九宫格(Sliced)模式,
    (九宫格编辑得选中图片去编辑)
    默认不显示

  • close
    拖入关闭按钮至spt_result 背景下,,命名为close
    调整参数
    调整位置:182 182

  • lb_title
    在spt_result下,新建2D对象,Label(文本):lb_title,来显示等级
    设置初始参数:60 #252323
    调整位置

  • lb_content
    在spt_result下,新建2D对象,Label(文本):lb_content,来显示分数
    设置初始参数:80 #252323
    调整位置

11.2 最终代码

11.2.1 game.ts导入模块

import { _decorator, Component, Node ,Vec3 , NodeEventType,Tween, AudioSource, assert,ParticleSystem2D} from 'cc';

11.2.2 套绳逻辑代码

_touchStart_btn_capture (touch: Touch, event: EventTouch) {
		let bgNode = touch.currentTarget._parent;
		let currentTarget = touch.currentTarget;
		this.rope_node.active = true;
		// 设置绳子在当前父节点的顺序
		this.rope_node.setSiblingIndex(100);
		let rope_node_p = this.rope_node.getPosition();
		let rope_node_y_start = - 600 ;
		let rope_node_y_up = 115 ;
		let rope_node_y_down = -600 ;
		// 设置绳子起始位置
		this.rope_node.setPosition(rope_node_p.x,rope_node_y_start);
		rope_node_p = this.rope_node.getPosition();
		let that = this ;
		let tao_num: number = 100;
		let tween_node :cc.Node = this.rope_node ;
		let tweenDuration: number = 0.5;
		let t1 = cc.tween(tween_node)
		    .to(tweenDuration, { position: new Vec3(rope_node_p.x,rope_node_y_up,0) }
				,{          
					onUpdate:(target:Vec3, ratio:number)=>{
						this.rope_node = target;
					}
				}
			)
			// to 动作完成后会调用该方法     
			.call( ()=>{
				// 获取当前牛儿的x点
				let cow_ins_p = that.cow_ins.getPosition()
				let currentX = cow_ins_p.x;
				if (currentX > -tao_num && currentX < tao_num){
				    cc.log("捕捉成功!");
					
					// 音效
					this.audioSource.playOneShot(this.audio_clip, 1);
					
					// 粒子
					let pc2d_fireworksNode = cc.find("Canvas/spt_bg/rope/pc2d_fireworks");
					this.fireworks = pc2d_fireworksNode.getComponent(ParticleSystem2D)
					this.fireworks.resetSystem()
					
				    // 移除
				    bgNode.removeChild(that.cow_ins);
				    // 获取牛儿的类型
					let cowType = that.cow_ins.getComponent("cow")
					
				    let ropeType = cowType._randomType +1;
					
					that.rope_node.getComponent(cc.Sprite).spriteFrame = that.rope_imgs[ropeType];
					
				    // 生成新的牛节点
				    that.cow_ins = cc.instantiate(that.cow_prefab);
					that.cow_ins.setPosition(cow_ins_p.x,0);
					
				    bgNode.addChild(that.cow_ins);
				    //
				    that.success = true;
				    // 分数+1
				    that.scoreNum ++;
				} else {
				    cc.log("捕捉失败!")
				}
			})
		let t2 = cc.tween(tween_node)
		    .to(tweenDuration, { position: new Vec3(rope_node_p.x,rope_node_y_down,0) }
				,{
					onUpdate:(target:Vec3, ratio:number)=>{   
						this.rope_node = target;   
					}
				}
			)
			// to 动作完成后会调用该方法
			.call( ()=>{
				that.rope_node.getComponent(cc.Sprite).spriteFrame = that.rope_imgs[0];
				// 判断是否捕捉成功
				if (that.success == true) {
				    let  scoreLabel = cc.find("Canvas/spt_bg/lb_score").getComponent(cc.Label);
				    scoreLabel.string = "Score:" + that.scoreNum;
				    that.success = false;
				}
			})
		cc.tween(tween_node).sequence(t1, t2).start(); // 将 t1 和 t2 两个缓动加入到新的缓动队列内
		
		
	}
	

11.2.3 游戏结束,展示结果弹窗

start() {
		
		// 获取 AudioSource 组件
		const audioSource_set = this.node.getComponent(AudioSource)!;
		// 检查是否含有 AudioSource,如果没有,则输出错误消息
		assert(audioSource_set);
		// 将组件赋到全局变量 audioSource 中
		this.audioSource = audioSource_set;
		
		let btn_capture_node = cc.find("Canvas/spt_bg/btn_capture");				
		btn_capture_node.on(NodeEventType.TOUCH_START, this._touchStart_btn_capture, this);
		
		
		this.success = false;
		// 初始分数
		this.scoreNum = 0;
		
		
		let countDownLabel = cc.find("Canvas/spt_bg/lb_count_down").getComponent(cc.Label);
		countDownLabel.string = this.time + "s";
		
		
		this.schedule(function () {
		    this.time --;
		    countDownLabel.string = this.time + "s";
		    if (this.time == 0) {
		        cc.log("游戏结束!");
		        // 获取弹窗节点
		        let resultNode = cc.find("Canvas/spt_result");
				
				//绑定关闭事件
				let closeNode = cc.find("Canvas/spt_result/close");
				closeNode.on(NodeEventType.TOUCH_START, this._touchStart_close, this);
				
		        // 获取title和content两个节点
		        let titleNode = resultNode.getChildByName("lb_title");
		        let contentNode = resultNode.getChildByName("lb_content");
		        // 展示分数
		        titleNode.getComponent(cc.Label).string = "最终得分 " + this.scoreNum;
		        // 获取组件
		        let contentLabel = contentNode.getComponent(cc.Label);
		        switch (true) {
		            case this.scoreNum <= 3:
		                contentLabel.string = "套牛新手";
		                break;
		            case this.scoreNum < 6:
		                contentLabel.string = "套牛神手";
		                break;
		            case this.scoreNum >= 6:
		                contentLabel.string = "套牛圣手";
		                break;
		
		        }
		        resultNode.active = true;
		        let score = this.scoreNum;
		       
		
		        cc.director.pause();
		
		    }
		
		},1);
		
		
    }

11.2.4 关闭按钮

// 关闭按钮,继续游戏
	_touchStart_close(touch: Touch, event: EventTouch) {
	    cc.log("继续游戏");
	    cc.director.resume();
	    cc.director.loadScene(this._mainScene);
	}

错误:因为函数后有逗号
index.js:1 Error: Unable to resolve bare specifier ‘__unresolved_2’ from http://localhost:7456/scripting/x/chunks/34/341ab3341f38daa5d6eb502f45f16e9d150576f5.js (SystemJS Error#8 https://git.io/JvFET#8)

参考

粒子和音频

补充说明

资源来源于网络各种免费分享,及自身学习总结,
若有不当可评论指正

A
B
C
D
cmd最简单的小游戏代码_使用Cocos creator制作【wind扫雷】-微信、头条、抖音小游戏接入... 专栏概述及目录:笑苍天Smile:专栏概述及目录​zhuanlan.zhihu.com游戏截图:游戏地址:微信扫一扫头条/抖音扫一扫游戏源码[1]。游戏技术:前端引擎-Cocos creator,语言-Ts,后端-Netty,语言-Java,数据库-Redis。制作目的:做这款游戏的起因是去年微信小游戏火了,想做一款游戏看看微信的市场反馈,之前在taptap上线了接近10款经典小游戏,扫雷的数据[... 阅读详情

相关推荐

从零到一:基于Cocos Creator的微信小游戏开发全流程实战指南

游戏开发的核心在于构建一个持续运行的交互式应用,其基本原理遵循“处理输入、更新状态、渲染画面”的循环。在移动互联网时代,轻量化、即点即玩的游戏形态因其便捷的传播和低用户获取成本而备受青睐。微信小游戏正是这一趋势下的典型技术实现,它依托微信庞大的社交生态和成熟的支付体系,为开发者提供了直达海量用户的平台。从技术选型角度看,使用成熟的游戏引擎如Cocos Creator,能有效降低开发门槛,引擎内置的物理系统、资源管理器和可视化编辑器,让开发者能更专注于游戏玩法逻辑的实现。在工程实践中,掌握环境搭建、核心循环编

weixin_30701575的博客 439

基于CocosCreator3D v1.0.0版本制作的微信小游戏Demo源码(实现7个关卡,排行榜功能).zip

【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于CocosCreator3D v1.0.0版本制作的微信小游戏Demo源码(3D跑酷闯关类型,实现了核心的玩法逻辑,简单的设计了7个关卡,同时实现了一个排行榜的功能).zip

cocos creator制作微信抖音小游戏《黄金矿工》

Step3: 游戏引擎特定时期,调用特定的入口, 我们写代码如果没有人调用是不值钱的,所以必须要让引擎调用到,引擎会在特定的时期,调用我们特定的入口,我们只要往特定的入口插入代码即可,开始运行之前调用 组件实例.start();Step4: 碰撞检测,我们让金属探测器Header来做碰撞,碰撞检测记住一点,那个碰撞器检测碰撞,就把碰撞检测的代码挂到那个碰撞器对应的节点上,所以新建一个代码来做碰撞检测,实现碰撞检测的函数入口。这个制作的时候一个技巧,主角是由绳子,和绳子断点上的金属圆环组成。

2301_80135027的博客 1450

基于cocosCreator做的微信经典飞机大战

【作品名称】:基于cocosCreator做的微信经典飞机大战 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:该项目是模仿的微信经典飞机大战 用CocosCreator开发的。 应用了CC数据驱动的优势,让一些参数方便调整,道具更容易扩展 诸如:敌机的生成频率,速度,子弹的频率 速度,还可以很容易的增加子弹的种类,ufo的种类等 敌机 子弹 ufo等使用了对象池 历史分数纪录用到了本地存储 结构上自上而下的控制,main控制游戏主逻辑,暂停继续得分等 main下有三个分组,敌机组 子弹组 ufo组,每个组又管理组员的生成逻辑

Cocos Creator 3D微信小游戏开发实战:跑酷Demo源码解析与优化

在游戏开发领域,跨平台发布与性能优化是核心技术挑战。Cocos Creator作为成熟的跨平台游戏引擎,通过其组件化架构与TypeScript强类型支持,为开发者提供了高效的开发工作流。其技术价值在于能够将同一套代码高效部署到多个平台,特别是对微信小游戏平台的原生适配,极大降低了发布门槛。在实际应用场景中,开发者常面临包体限制、性能调优与平台特定功能集成等问题。本文以一份开箱即用的Cocos Creator 3D跑酷游戏Demo源码为例,深入剖析了其针对微信小游戏平台的完整适配方案,涵盖了从角色控制、资源管

weixin_33853827的博客 570

Cocos Creator + TypeScript 开发微信小游戏实战指南

微信小游戏是轻量级互动内容的核心载体,其运行于小程序容器内,依赖标准化构建流程与强类型前端工程实践。Cocos Creator作为专为小游戏优化的引擎,提供开箱即用的平台适配与分包能力;TypeScript则通过静态类型检查、接口约束和编辑器智能提示,显著降低单人开发中的逻辑错误与维护成本。二者结合,构成高确定性、低试错成本的小游戏开发技术栈,广泛应用于解谜、休闲、像素等轻度游戏品类,并支撑从本地调试、真机验证到审核上线的完整交付闭环。

weixin_29007809的博客 220

SystemJS

最近的工作有用到SystemJS,在这里对SystemJS的理解做个总结和记录吧,备忘。什么是SystemJSSystemJS是一个可运行于浏览器端的模块加载器,是一个polifill,可...

champyin的博客 5838

一个人独立开发微信小游戏:Cocos Creator引擎选型与TypeScript实战

游戏引擎选型是独立开发者的首要技术决策,其核心在于平衡开发效率、性能表现与平台适配成本。Cocos Creator凭借官方级微信小游戏支持、TypeScript语言集成及可视化编辑器,成为国内小游戏开发的主流方案。TypeScript的静态类型系统能在编译阶段拦截大量低级错误,配合接口与泛型可显著提升游戏逻辑的可维护性。在微信小游戏包体与内存限制下,合理的资源分包、纹理压缩与对象池技术是保障流畅体验的关键。本文基于一款节奏休闲小游戏的完整开发历程,深入拆解引擎选型对比、TypeScript类型约束、性能优化

weixin_30166691的博客 252

studio3.1.1关于Error:Unable to resolve dependency 的解决方案

上课的时候死活解决不了,然后老师过来帮我一鼓捣就好了。。。记下来老师的解决方法,便于以后再出错自己自行解决我的错误:Possible causes:&lt;ul&gt;&lt;li&gt;The project ‘XXXXXXX' may be using a version of Gradle that does not containPossible causes:&lt;ul&gt;&lt;...

Y992yu的博客 2783

一人工作室微信小游戏开发实战:Cocos Creator + TypeScript闭环指南

微信小游戏作为轻量级H5游戏分发平台,依托点开即玩、零安装门槛等特性,成为独立开发者与小型团队的重要落地场景。其技术本质是基于WebView的JavaScript运行环境,对首包体积、启动性能、API兼容性有严苛要求。Cocos Creator凭借深度适配微信构建链、稳定2D管线及完善TS支持,已成为一人工作室高性价比首选引擎;TypeScript则通过静态类型检查显著降低维护成本,规避运行时隐式错误。本文聚焦资源极简条件下的工程化实践,涵盖架构分层、微信登录、广告接入、本地加密、构建优化及审核避坑等真实上

weixin_33850890的博客 357

一个人如何用Cocos Creator和TypeScript开发微信小游戏:实战复盘

微信小游戏开发中,Cocos Creator与TypeScript的组合因其高效和类型安全而成为独立开发者的热门选择。Cocos Creator提供可视化编辑和官方微信小游戏导出支持,TypeScript则通过静态类型检查提升代码可靠性。这种技术栈能显著降低开发门槛,加快迭代速度,适用于快速验证游戏玩法和广告变现。在性能优化方面,Canvas渲染和对象池技术是关键,能确保游戏在低端设备上流畅运行。本文基于实战经验,详细拆解了从技术选型到上线运营的全过程,为独立开发者提供可复用的框架和避坑指南。

weixin_31881651的博客 311

Cocos微信小游戏开发教程

Cocos Creator是一个功能强大的游戏开发工具,特别适合用于开发微信小游戏。本文将从下载安装Cocos Creator、创建项目、开发调试到最终发布的全过程进行详细讲解,帮助开发者快速上手开发微信小游戏。

hawkol的专栏 3411

Cocos Creator微信小游戏开发入门:从环境搭建到发布上线的完整指南

游戏引擎是游戏开发的核心工具,它通过封装底层图形、物理和音频等模块,为开发者提供高效的创作环境。其工作原理在于将游戏逻辑、资源管理和平台适配抽象成可视化的工作流,从而降低开发门槛。在技术价值上,优秀的引擎能实现“一次开发,多端部署”,显著提升开发效率并优化性能。尤其在移动端和微信小游戏等轻量化应用场景中,引擎的跨平台能力和包体控制至关重要。Cocos Creator作为一款成熟的国产跨平台游戏引擎,凭借其与微信小游戏生态的深度集成和全流程解决方案,成为开发者的热门选择。本指南将围绕Cocos Creator

weixin_34396902的博客 402

新春“码”启 | 0 基础开发微信小游戏,Cocos 游戏引擎 + AI 辅助编程(第2天)

本文是“新春“码”启 | 从零开始开发微信小游戏”第2天的学习历程,包括如何设计一个适合小朋友玩的游戏创意和使用Cocos Creator进行初步开发的过程。虽然在游戏创意上遇到了一些挑战,但通过不断尝试和学习Cocos的基础操作,逐渐找到了方向。同时,我们还探讨了TypeScript的基础知识,为后续开发打下坚实基础……

老牛啊 1333

CocosCreator趣味套牛小游戏

入门级的cocoscreator小游戏,不可不看的视频资源文件。

cocos creator2.x 多个小游戏源码

多个cocos creator2.0版本源码demo分享

Cocos Creator微信小游戏《疯狂打螺丝》|源码

《CocosCreator开发打螺丝消除小游戏全流程解析》 摘要:本文详细介绍了如何使用CocosCreator开发一款火爆的微信打螺丝消除小游戏。游戏核心玩法包含随机生成螺丝、点击消除、闯关计时等功能模块,文章从预制体制作、数据管理、游戏逻辑等维度完整呈现开发流程。特别介绍了微信分享适配、屏幕优化等关键技术点,提供可直接上线的代码方案。该教程适合新手学习超休闲游戏开发,也适用于独立开发者快速实现游戏变现,案例采用TypeScript语言开发,支持CocosCreator2.4.8/3.x版本。

kyh1003381120的博客 793

cocos creator仿微信小游戏跳一跳源码

基于cocos creator2.2.2仿微信小游戏跳一跳源码,实现了基本玩法。

上一篇: Cocos Creator发布微信小游戏包内体积过大问题
下一篇: 暴雪战网重装失败问题解决
wx_h13813744
博客等级 码龄10年 290粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wx_h13813744

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值