![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
cocos creator
cocos creator
.net core game
致力于.net core全栈游戏服务器开发
展开
-
cc.PolygonCollider 多边形相交判断(支持多边形旋转)
itemcc.Class({ extends: cc.Component, properties: {}, onLoad() { this.polygonCollider = this.node.getComponent(cc.PolygonCollider); }, getPointsWorldArray: function (...原创 2020-03-02 12:36:55 · 1001 阅读 · 0 评论 -
CocosCreator 3.0中摄像机调整技巧: 1.旋转:Cmd+右键 移动:空格+右键 放缩:滚轮
1)2D UI 的添加非常简单,选择2D场景查看模式--》Scene-->Create-->UI Component -->Button就可以添加一个按钮到场景中,就会自动添加Canvas节点。2)Camera可以挂载到节点身上,这样节点走到哪里,就会跟到哪里。3)调整摄像机的位置: 首先将摄像机位置改为0,0,0 旋转也是0,0,0,然后开始调整位置即可。...原创 2020-12-18 00:39:05 · 1050 阅读 · 0 评论 -
如何计算drawcall(根据节点绘制先后顺序,然后看上一个控件是否用的不是同一个Sprite那么drawcall就+1)
其实计算很简单啦,就是根据绘制顺序,跟记录一下指针一样。绘制当前这个的时候,计算一下上一个是否是同一个图集。 那么:就知道drawcall了原创 2020-12-16 17:29:54 · 523 阅读 · 0 评论 -
使用cc.SpriteAtlas 中批量资源管理的方式思考(如管理一副扑克牌)
背景: 比如一副扑克,有54张,按照普通的做法,则是制作一个Prefab预制体,然后里面有个CardArr存储所有的54张牌纹理数组,然后初始化一张牌取一张纹理。 这样所有的54张都要拖进去,感觉怪怪的。1)异步加载(不推荐): //设置显示的图片 setCardShow(name) { var self = this cc.log("set...原创 2019-05-19 19:05:22 · 802 阅读 · 1 评论 -
观察者模式巧妙解决 http请求未结束, 就切换场景导致的野指针问题
1)有隐患的lua代码http.get("xxx", function(data){ self.update_view(data)})这样的问题,由于此刻请求尚未得到返回,突然切换了场景,导致self为野指针, 再调用方法,则有错误!2)解决办法login_service_proxy 作为单例监听网络消息,收到消息处理完毕,抛出事件,让logic_scene UI层监...原创 2019-11-11 11:07:15 · 201 阅读 · 1 评论 -
creator世界坐标w_pos会变化导致的录屏回放时相对位置变化造成bug(改为local_pos即可解决)
之前这个参数传递的是w_pos, 改正后: 先转化为本地坐标,再搞。这样计算时,才根据实际的分辨率转化为全局坐标,就没有问题啦!let w_pos = event.getLocation(); // 避免不同分辨率下的问题 // 相对位置不会变化 let local_pos = this.node.parent.convertToNodeSpaceAR(w_pos); evt.getInstance().emit("one_to_one原创 2020-12-17 13:18:02 · 375 阅读 · 1 评论 -
与场景相关的设计模式: MJResMgr, 这样在GameScene中挂到Canvas上进行初始化为单例,从而在其它组件中使用
与场景相关的设计模式: MJResMgr, 这样在GameScene中挂到Canvas上进行初始化为单例,从而在其它组件中使用原创 2021-04-09 15:02:16 · 88 阅读 · 0 评论 -
【客户端心跳机制实现】1.socket.io为例子
1) 背景socket.io在网络断开时,会不断断线重连,因此,一直连接不上,需要强行关闭2) 实现startHearbeat: function () { //客户端发送game_ping消息,当服务器收到后,就发送game_pong消息,代表客户端处理连接状态 this.sio.on('game_pong', function (...原创 2021-09-07 20:15:26 · 1861 阅读 · 0 评论 -
用js的原型链机制设计插件系统在不修改原先类的情况下,去动态修改类的功能。案例1:草稿键盘 案例2:组键盘 (符合对内修改关闭,扩展的话,新增即可,解耦)
➜ Script tree.|____Helloworld.ts|____utils| |____JsUtils.ts|____APlugin.ts|____base| |____BaseComponent.ts| |____BasePlugin.ts|____Helloworld.tsimport BaseComponent from "./base/BaseComponent";const {ccclass, property} = cc._decorator;...原创 2021-09-07 20:14:47 · 193 阅读 · 0 评论 -
我所理解的游戏客户端的mvc架构
现在写java我很清晰的认识到,模块化的好处,new PLogin(loginView, name, pwd).process();哪怕是这个样子,其实也是很轻松的实现了这个模块只处理一个逻辑,非常的方便维护。每一个处理逻辑,都要实现process接口。LoginScene // 其实就是场景,因为跳转场景的话,这个是唯一的,同一时刻只有一个场景。其实就是:各种LoginView之类的,一个个UI界面。模型,其实不仅仅包含java/ts脚本实体,还。因此里面适合写:各种网络事件和Event的监听。原创 2023-02-20 22:01:37 · 300 阅读 · 0 评论 -
使用(1.widget 2.上下左右 + 4个角落 + 中间)搭建一个能适应各种分辨率的UI(widget停靠各个位置 + 按照较小的比例放缩节点)
1)先看效果正常的设计分辨率的奇葩分辨率ipad下华为p9这种比较长的比较窄的,甚至我都不转屏总结:可见,在任何分辨率下,显示效果都还不错:1.没有黑边 2.背景铺满 3.元素在不同分辨率下代销始终,做到都显示差不多2)实现原理1.先说背景:不考虑拉伸的话,就直接使用widget组件给铺满2.显示UI的父节点地方先搞4个父节点My、Right、Up、Left,锚点不用改,因为仅仅是一个节点,使用widget设置他们4个方向的停靠点3.根据手牌和出.原创 2020-05-26 14:52:41 · 480 阅读 · 1 评论 -
帧动画和骨骼动画 本质的理解
假如是做:千人同屏。比如:足球游戏中,很多观众,可以营造出巨大生动的场面。这种,就需要动画进行烘焙,这个过程其实是将cpu或者gpu计算的部分预先计算好放到内存,下次使用的时候,就无需计算了。因此本质都是:cpu和内存的互换。由骨骼组成,通过计算旋转角度+位置等信息,从而确定下一帧长什么样子。帧动画:每一个动作都由很多张图片组成,快速的切换。因此缺点是:需要消耗CPU 或者 gpu进行计算。因此缺点是:内存占用大。cpu和内存之间的互换。...原创 2022-08-29 17:17:45 · 1829 阅读 · 0 评论 -
通用客户端架构
GlobalMsgPreProcessManager.ts//全局消息预处理,数据和UI分离。1)xxxMain.ts是作为场景入口,上面挂载了很多的资源Prefab等,这样子容易知道这个场景下有多少个页面。2)每一个xxxPrefab就是一个页面,关联一个xxxPanel.ts的脚本,书写相关的逻辑。StartMain.ts//负责网络连接管理等组件的初始化。NetManager.ts//网络管理,是一个常驻节点。2)start//负责游戏的启动,闪屏等。............原创 2022-08-01 18:40:19 · 94 阅读 · 0 评论 -
cocos creator 1.websocket单例模式 2.不用挂到Scene上,直接getInstance就行
let websocket = cc.Class({ extends: cc.Component, properties: { _sock: null, _services_handler: null, _msg_queue: [], is_lock: false, }, onLoad: fun...原创 2020-04-22 17:35:47 · 738 阅读 · 0 评论