CocosCreator版本:2.3.4

一般游戏都有图层管理,比如

  • sceneLayer 场景层
  • panelLayer 弹框层
  • tipLayer   提示框层

cocos里的场景不是持久化的,每次切换都会自动destroy,如果在场景上放这些图层,那么每个scene都要放一遍?然后再获取,这样很麻烦。

加载场景使用的是cc.director.loadScene,scene的容器node貌似是director上的一个nodeActivator

现在如果不考虑scene的容器或者cocos的顶层容器。我想一想两种图层管理的方法。

一、只有一个scene

整个游戏一个scene,就是游戏入口的scene,在这个scene上放sceneLayer等图层的node,这个入口scene相当于egret和laya的stage。

然后所有场景scene和弹框模块,都做成预制件prefab,每次显示都addChild到入口scene的相应图层上就行了。

 二、使用常驻节点

比如我在场景1,放置sceneLayer等图层。为了方便显示,我每个图层加了个单色。

常驻节点必须在根节点下,也就是和canvas同级。把3个图层设置为常驻节点。

onLoad(){
    cc.game.addPersistRootNode(cc.find("sceneLayer"));
    cc.game.addPersistRootNode(cc.find("panelLayer"));
    cc.game.addPersistRootNode(cc.find("tipLayer"));
}

然后切换场景,在新场景中,仍然可以显示并获取到sceneLayer等图层。

onLoad(){
    console.log(cc.find("sceneLayer"));  //输出sceneLayer的cc.Node
}

利用常驻节点,我们可以在入口场景中放置sceneLayer等图层。用图层管理类保存引用。

三、最佳实践

图层管理类,单例

export default class LayerManager extends cc.Component {

    private static instance:LayerManager;
    public static ins():LayerManager{
        if(this.instance == null){
            this.instance = new LayerManager();
        }
        return this.instance;
    }

    public panelLayer:cc.Node;
    public tipLayer:cc.Node;
    
}

在入口场景中设置常驻节点layer, 用图层管理类保存引用。以备之后使用。

@ccclass
export default class Helloworld extends cc.Component {

    onLoad(){
        cc.game.addPersistRootNode(cc.find("sceneLayer"));
        cc.game.addPersistRootNode(cc.find("panelLayer"));
        cc.game.addPersistRootNode(cc.find("tipLayer"));

        LayerManager.ins().panelLayer = cc.find("panelLayer");
        LayerManager.ins().tipLayer = cc.find("tipLayer");
    }
}

以上就是如何在CocosCreator中利用常驻节点做图层管理的详细内容,更多关于CocosCreator常驻节点做图层管理的资料请关注Devmax其它相关文章!

如何在CocosCreator中利用常驻节点做图层管理的更多相关文章

  1. ios – 如何使用blender和PowerVR SDK为cocos3d创建一个简单的3d球体

    我是cocos3d的新手.我想创建一个简单的项目–旋转的3d球体.我用搅拌机设计了一个3d球体.所以我想要帮助创建collada文件和pod文件.使用blender和PowerVRSDK创建这个简单的3d对象时应该注意什么.谢谢解决方法如何在搅拌机中制作简单的球体,然后使用JeffLamarche的Blender-to-iOSscript将其导出?这甚至不需要Cocos或PowerVR,但这是一个良好的开端.由于您可以在iOS中轻松地将Cocos与非Cocos类集成,因此可能会有所帮助.你可以更进一步,利

  2. CocosCreator骨骼动画之龙骨DragonBones

    这篇文章主要介绍了怎么在CocosCreator中使用骨骼动画龙骨DragonBones,对骨骼动画感兴趣的同学,可以试一下

  3. 如何使用CocosCreator对象池

    这篇文章主要介绍了CocosCreator对象池,对性能有研究的同学,要着重看一下

  4. 整理CocosCreator常用知识点

    这篇文章主要介绍了整理CocosCreator常用知识点,这些知识点,平时几乎都能用到,希望同学们看完后,可以自己去试一下,加深印象

  5. 详解CocosCreator MVC架构

    这篇文章主要介绍了CocosCreator MVC架构,同学们在制作游戏过程中,尽量使用一些架构,会避免很多问题

  6. 游戏开发中如何使用CocosCreator进行音效处理

    这篇文章主要介绍了游戏开发中如何使用CocosCreator进行音效处理,并对音效组件进行封装,方便以后使用,同学们看完之后,一定要亲手实验一下

  7. CocosCreator如何实现划过的位置显示纹理

    这篇文章主要介绍了CocosCreator纹理shader的一些知识,想了解shader的同学,一定要看下,并且亲自动手实践

  8. Python使用matplotlib.pyplot as plt绘图图层优先级问题

    这篇文章主要介绍了Python使用matplotlib.pyplot as plt绘图图层优先级问题.文章围绕主题展开详细内容需要的小伙伴可以参考一下

  9. 详解CocosCreator华容道数字拼盘

    这篇文章主要介绍了详解CocosCreator华容道数字拼盘,对华容道感兴趣的同学,看完之后,可以回去亲手试一下

  10. AJAX显示加载中并弹出图层遮挡页面的实现示例

    大家都知道AJAX的请求是异步的,这种异步的机制给我们带来了体验上的优化,但是同时我要求我们有更完善的思维去处理一个业务。当用户请求后长时间没有回应是一种非常不好的用户体验,所以我们可以在请求后利用AJAX显示加载中并弹出图层遮挡页面,下面来看看实现方法。

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部