获得徽章 0
专业牛马开发 @摸鱼无限公司
专业牛马开发 @摸鱼无限公司
专业牛马开发 @摸鱼无限公司
专业牛马开发 @摸鱼无限公司
专业牛马开发 @摸鱼无限公司
专业牛马开发 @摸鱼无限公司
专业牛马开发 @摸鱼无限公司
#每天一个知识点#
2023/07/18

聊聊常驻节点

在 cocos ceater 中我们如何实现常驻节点呢?一般我们可以
cc.game.addPersistRootNode(node);
来使得该节点在场景切换时不会被销毁,什么场景下,我们会使用到常驻节点呢?一般是有
1. 全局数据存储,如果我们有一些在整个游戏中共享的全局数据,用户分数/游戏设置等等,我们把给数据存储到常驻节点中,就能在整个游戏中不同的场景都能使用到。
2.全局的节点访问,如果我们需要多个场景都会访问到的同一个节点,比如一个全局的音效设置等,这样能确保不会被销毁,爷方便访问。

总的来说,使用到常驻节点就是为了便于全局的访问,以及不会被销毁。但是我们得小心,因为全局的东西往往意味着不被销毁,一直占用,滥用导致游戏卡顿,内存占用过高。所以确保只将必要的数据和节点设置为常驻节点,并在不需要时及时释放。
展开
评论
#每天一个知识点#

2023/07/17

在cocos ceater中节点是按照节点树排序的,所以销毁的话只能从后往前操作,不然销毁的会从后补上前一个被销毁的位置
评论
#每天一个知识点#
2023/07/16

单例是否要扩展继承自组件类? 为什么?

今天看到这个问题,感觉挺有趣的,并且之前工作中也遇到这个问题,来说说自己的看法吧。

之前做一个活动的的优化的时候,因为以前是异步加载资源的,改为同步加载资源,类似unity的加载方式,一进入游戏就加载相关的bundle,并且配置必要的资源表加载,同时为了便于资源的静态引入,所以把活动控制层继承组件,并且挂载到主视图中,同时设置该节点不会被随着场景切换移除,这里要注意,因为我们挂载在主场景中,这里的单例不能用懒汉式单例,必须使用饿汉式,避免单例调用的时候使用的指向不一致的问题。类似的还有,创建阶段利用组件的生命周期,销毁阶段,更新节点等,这里可以说是用利用到单例以及结合组件的,实现一些组件的初始化等操作。

同时挂载组件还能利用组件的特性,比如我们在空节点上挂载控制类,控制该节点的active 属性的开启等,节点事件,属性检查等便于开发。

其实具体的使用还得看你的使用场景,其实没有绝对的说法的。一种方案有便利的地方,往往也存在不适合的。比如我们使用单例来挂载组件的时候,因为组件是可以在多个游戏对象上添加和复用的,而单例通常只有一个实例,所有在将单例扩展为组件类时,需要确保在游戏中只存在一个该组件的实例。同时,当把单例扩展为组件的时候,我们需要留意好额外资源的引入等,做好相应的处理
展开
1
#每天一个知识点#
2023/07/15

随便聊聊最近一些心得,如今很多小游戏是用cocos ceater 做的,而cocos 使用 TS作为脚本语言,有其好处优点,便于跨平台,但也有它的局促,首先作为一门单线程语言,一崩溃游戏就没法进行了。其次缺少析构函数,宏等概念,在一些场景不够使用。

为了避免出错崩溃,一般首先我们游戏中要确保资源是都存在的,还有就是确保错误的收集,同时对值做处理,处理一些后端没有传递值发生的情况等。

另外,建议个人的经验,小游戏开发中应该做好MVC的写法,工作中有个同事很C语言的写法,面向过程,这会导致一旦我们的接口数据格式发生变化,那么就没发再使用了,基本需要重写实现了。所以把视图层 / 控制层 分开是很有必要的。同时还有就是,减少动态加载,在引擎中加载,因为引擎中导入的资源是属于静态加载,引擎会帮我们处理资源加载释放的问题,避免我们手动加载导致的一些问题。
展开
评论
#每天一个知识点#

2023/07/13

在游戏中,我们经常会使用到滚动栏,需要注意的是,这往往是个非常容易影响游戏性能的地方,我们往往会在滚动栏中实例很多的节点,如果不做优化和处理,非常容易造成卡顿等现象。

优化包含多个部分,首先是避免一次性的实力,这会导致高IO,过多的节点同时实例,我们可以采用懒加载的思路,我们看不到的节点不要马上实例。同时优化我们可以使用对象池的,当我们的节点离开可视区域的时候,吧该节点放入对象池中,但需要再继续取出。这样避免同时存在的节点过多。导致 DC 过高。
展开
评论
下一页
个人成就
文章被点赞 5
文章被阅读 1,250
掘力值 88
收藏集
1
关注标签
12
加入于