 
 获得徽章 0
  #每天一个知识点#  
2023/07/18
聊聊常驻节点
在 cocos ceater 中我们如何实现常驻节点呢?一般我们可以
cc.game.addPersistRootNode(node);
来使得该节点在场景切换时不会被销毁,什么场景下,我们会使用到常驻节点呢?一般是有
1. 全局数据存储,如果我们有一些在整个游戏中共享的全局数据,用户分数/游戏设置等等,我们把给数据存储到常驻节点中,就能在整个游戏中不同的场景都能使用到。
2.全局的节点访问,如果我们需要多个场景都会访问到的同一个节点,比如一个全局的音效设置等,这样能确保不会被销毁,爷方便访问。
总的来说,使用到常驻节点就是为了便于全局的访问,以及不会被销毁。但是我们得小心,因为全局的东西往往意味着不被销毁,一直占用,滥用导致游戏卡顿,内存占用过高。所以确保只将必要的数据和节点设置为常驻节点,并在不需要时及时释放。  
2023/07/18
聊聊常驻节点
在 cocos ceater 中我们如何实现常驻节点呢?一般我们可以
cc.game.addPersistRootNode(node);
来使得该节点在场景切换时不会被销毁,什么场景下,我们会使用到常驻节点呢?一般是有
1. 全局数据存储,如果我们有一些在整个游戏中共享的全局数据,用户分数/游戏设置等等,我们把给数据存储到常驻节点中,就能在整个游戏中不同的场景都能使用到。
2.全局的节点访问,如果我们需要多个场景都会访问到的同一个节点,比如一个全局的音效设置等,这样能确保不会被销毁,爷方便访问。
总的来说,使用到常驻节点就是为了便于全局的访问,以及不会被销毁。但是我们得小心,因为全局的东西往往意味着不被销毁,一直占用,滥用导致游戏卡顿,内存占用过高。所以确保只将必要的数据和节点设置为常驻节点,并在不需要时及时释放。
      展开
    
  评论
 
          2
        
  #每天一个知识点#  
2023/07/16
单例是否要扩展继承自组件类? 为什么?
今天看到这个问题,感觉挺有趣的,并且之前工作中也遇到这个问题,来说说自己的看法吧。
之前做一个活动的的优化的时候,因为以前是异步加载资源的,改为同步加载资源,类似unity的加载方式,一进入游戏就加载相关的bundle,并且配置必要的资源表加载,同时为了便于资源的静态引入,所以把活动控制层继承组件,并且挂载到主视图中,同时设置该节点不会被随着场景切换移除,这里要注意,因为我们挂载在主场景中,这里的单例不能用懒汉式单例,必须使用饿汉式,避免单例调用的时候使用的指向不一致的问题。类似的还有,创建阶段利用组件的生命周期,销毁阶段,更新节点等,这里可以说是用利用到单例以及结合组件的,实现一些组件的初始化等操作。
同时挂载组件还能利用组件的特性,比如我们在空节点上挂载控制类,控制该节点的active 属性的开启等,节点事件,属性检查等便于开发。
其实具体的使用还得看你的使用场景,其实没有绝对的说法的。一种方案有便利的地方,往往也存在不适合的。比如我们使用单例来挂载组件的时候,因为组件是可以在多个游戏对象上添加和复用的,而单例通常只有一个实例,所有在将单例扩展为组件类时,需要确保在游戏中只存在一个该组件的实例。同时,当把单例扩展为组件的时候,我们需要留意好额外资源的引入等,做好相应的处理  
2023/07/16
单例是否要扩展继承自组件类? 为什么?
今天看到这个问题,感觉挺有趣的,并且之前工作中也遇到这个问题,来说说自己的看法吧。
之前做一个活动的的优化的时候,因为以前是异步加载资源的,改为同步加载资源,类似unity的加载方式,一进入游戏就加载相关的bundle,并且配置必要的资源表加载,同时为了便于资源的静态引入,所以把活动控制层继承组件,并且挂载到主视图中,同时设置该节点不会被随着场景切换移除,这里要注意,因为我们挂载在主场景中,这里的单例不能用懒汉式单例,必须使用饿汉式,避免单例调用的时候使用的指向不一致的问题。类似的还有,创建阶段利用组件的生命周期,销毁阶段,更新节点等,这里可以说是用利用到单例以及结合组件的,实现一些组件的初始化等操作。
同时挂载组件还能利用组件的特性,比如我们在空节点上挂载控制类,控制该节点的active 属性的开启等,节点事件,属性检查等便于开发。
其实具体的使用还得看你的使用场景,其实没有绝对的说法的。一种方案有便利的地方,往往也存在不适合的。比如我们使用单例来挂载组件的时候,因为组件是可以在多个游戏对象上添加和复用的,而单例通常只有一个实例,所有在将单例扩展为组件类时,需要确保在游戏中只存在一个该组件的实例。同时,当把单例扩展为组件的时候,我们需要留意好额外资源的引入等,做好相应的处理
      展开
    
  
          1
        
 
          3
        
  #每天一个知识点#  
2023/07/15
随便聊聊最近一些心得,如今很多小游戏是用cocos ceater 做的,而cocos 使用 TS作为脚本语言,有其好处优点,便于跨平台,但也有它的局促,首先作为一门单线程语言,一崩溃游戏就没法进行了。其次缺少析构函数,宏等概念,在一些场景不够使用。
为了避免出错崩溃,一般首先我们游戏中要确保资源是都存在的,还有就是确保错误的收集,同时对值做处理,处理一些后端没有传递值发生的情况等。
另外,建议个人的经验,小游戏开发中应该做好MVC的写法,工作中有个同事很C语言的写法,面向过程,这会导致一旦我们的接口数据格式发生变化,那么就没发再使用了,基本需要重写实现了。所以把视图层 / 控制层 分开是很有必要的。同时还有就是,减少动态加载,在引擎中加载,因为引擎中导入的资源是属于静态加载,引擎会帮我们处理资源加载释放的问题,避免我们手动加载导致的一些问题。  
2023/07/15
随便聊聊最近一些心得,如今很多小游戏是用cocos ceater 做的,而cocos 使用 TS作为脚本语言,有其好处优点,便于跨平台,但也有它的局促,首先作为一门单线程语言,一崩溃游戏就没法进行了。其次缺少析构函数,宏等概念,在一些场景不够使用。
为了避免出错崩溃,一般首先我们游戏中要确保资源是都存在的,还有就是确保错误的收集,同时对值做处理,处理一些后端没有传递值发生的情况等。
另外,建议个人的经验,小游戏开发中应该做好MVC的写法,工作中有个同事很C语言的写法,面向过程,这会导致一旦我们的接口数据格式发生变化,那么就没发再使用了,基本需要重写实现了。所以把视图层 / 控制层 分开是很有必要的。同时还有就是,减少动态加载,在引擎中加载,因为引擎中导入的资源是属于静态加载,引擎会帮我们处理资源加载释放的问题,避免我们手动加载导致的一些问题。
      展开
    
  评论
 
          2