资源第一篇 =》bundle包

2024-09-07 00:04
文章标签 资源 bundle 第一篇

本文主要是介绍资源第一篇 =》bundle包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

bundle包主要用于游戏资源的模块化功能,以便更好的管理游戏资源、优化游戏资源的加载、优化游戏包体的大小,提高游戏体验。我们可以根据实际的场景,把游戏资源进行合理的分包。

bundle类型

cocos包分为内置bundle自定义bundle

内置bundle 是cocos默认分配的bundle,一般有 internal、resouces、main、startScene。

自定义bundle  是开发者把一个目录设置为bundle。

内置bundle

  1. internal  bundle该bundle 开发者一般不会修改到,其是cocos默认存在的,主要存放cocos的内置资源 effects 和Materials。优先级默认:11
  2. resouces bundle:我们可以理解为是一个存放公共资源bundle。
    1. 创建:在cocos的资源管理器中,默认是没有resouces 目录的,当我们创建了一个resouces时,则该目录会被cocos识别为一个内置resouces bundle。
    2. 打包情况:在resouces bundle下的所有资源都会被打包到 resouces bundle下。
    3. 应用:一般我们会把公共资源存放到该目录下,例如一个资源被多个bundle包使用时,我们应包该资源存放到resouces 目录下。
    4. 优先级:默认是 8
  3. main bundle:这是游戏的主包,其范围是所有在asssets目录下且不在任何bundle目录的资源。不需要创建,打包时会自动生成的一个bundle。
    1. 创建: 不需要创建,打包时cocos会自动生成的一个bundle
    2. 打包情况:只会打包场景静态引用到的游戏资源,未静态引用到的资源不会打包
    3. 应用:一般我们把主场景的游戏资源、不是公共的资源存放到该目录下。
    4. 优先级:默认是 7

注意:

1,不在任何bundle中的场景,都会打包到main包中,且场景静态引用到的资源,都会打包到main包中(忽略优先级),优先级问题后面会具体分析。

2,main包与其他bundle的区别:main包只会打包静态引用到的资源,其他bundle会把bundle目录下的所有资源都会打包进去。(忽略优先级)

自定义的bundle

开发者定义的bundle包 ,即为自定义的bundle。在bundle包中的所有资源都会被打包。

这里对main包与其他bundle区别做个总结:main  只会打包场景依赖的资源。其他bundle会打包目录下与依赖的资源。依赖资源指的是场景与预制体静态引用到的资源。

bundle 的优先级

为了解决单个资源被多个bundle 使用,而不造成资源冗余问题,即出现了bundle 的优先级配置技术。bundle 的默认优先级共有 1-10个优先级。资源打包时,会被优先打包到优先高的bundle中。

注意:

资源会被打包到优先级高的bundle,是指被预制体、场景静态引用到的资源。

例如:

1,bundleA 的场景scene1 静态引用了资源a,bundleA的优先级是6。

2,bundleB的场景 scene1 静态引用了资源a,bundleB的优先级是5。

资源a 最终会被打包 bundleA中,bundleB会在config.json 的redirect 重定向字段中记录资源a的uuid与所依赖bundle的deps的索引。通过deps索引找到bundle,再通过uuid找到对应的资源。

优先级设置

同个资源被多个bundle 依赖使用,优先级相同时,则多个bundle中都会含有该资源。其他情况则会被打包到优先级高的bundle中。

bundle包加载顺序

cocos 默认的自动加载顺序,如下图:

所以对应公共资源,即多个bundle都会使用到的资源,我们建议把该资源存放到 resources 目录下,因为整个cocos项目资源加载流程是:优先加载 internal bundle,再加载resouces bundle,最后加载main bundle。这是cocos固定的加载顺序,无法改变。

应用问题

  1. 当多个bundle包都会使用的资源,我们应该把该资源存放到公共的resouces 包中。
  2. 当某个功能模块所使用到的资源,其他地方并不会使用到,则应在开启一个独立的独立的bundle。
  3. 当我们的首个场景资源过多,我们为了避免进入首场景的时间过长,可以把首场景资源分出一个bundle。
  4. 当bundleA、bundleB 都是静态使用了同一个资源时,bundleA的优先级大于 bundleB,则该资源会被打包到 bundleA中。 使用BundleB时,需要先加载bundleA。(应规避这种情况)。

bundle 的加载与释放

内置bundle(internal、resouces、main)cocos会对其自动加载。对于自定义bundle,我们需要手动加载。

官方文档

bundle 包跨项目使用

因为bundle包是一个完全独立的包,含有资源和脚本,所以我们可以跨项目使用。但是需要注意:引擎版本需要相同,因为不同的引擎,其bunlde包的结构、加载、解析等可能不同。

这篇关于资源第一篇 =》bundle包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143495

相关文章

49个权威的网上学习资源网站

艺术与音乐 Dave Conservatoire — 一个完全免费的音乐学习网站,口号是“让每一个人都可以接受世界级的音乐教育”,有视频,有练习。 Drawspace — 如果你想学习绘画,或者提高自己的绘画技能,就来Drawspace吧。 Justin Guitar — 超过800节免费的吉他课程,有自己的app,还有电子书、DVD等实用内容。 数学,数据科学与工程 Codecad

[Linux Kernel Block Layer第一篇] block layer架构设计

目录 1. single queue架构 2. multi-queue架构(blk-mq)  3. 问题 随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

caffe训练openpose相关资源

CPMTransformationParameter参数解析: https://www.jianshu.com/p/063a2159f0f2 genLMDB.py: https://www.jianshu.com/p/1cae32cbd36d OpenPose 参数说明: https://blog.csdn.net/zziahgf/article/details/84668319 openp

ubuntu内存资源使用情况监视

此处分享一个可以查看ubuntu系统中资源使用情况的指令,只需要在终端中输入一下这条指令即可: gnome-system-monitor

一个C++程序运行,从点击运行到控制台打印文本,电脑硬件的资源是如何调动的

当点击运行一个 C++ 程序并看到控制台输出文本时,计算机硬件和操作系统之间协同工作,完成了多个步骤。这些步骤涉及 CPU、内存、存储设备、操作系统和输入输出设备的共同作用。下面是一个详细的过程描述: 1. 程序加载 启动:当你点击运行一个可执行文件时,操作系统(通常是 Windows、Linux 或 macOS)的文件系统管理器识别请求,并启动加载程序。读取可执行文件:加载程序将可执行文件从

RK3288 资源汇总

用了一段时间的RK3288做开发,现汇总一下网上的学习资源: 1、九鼎创展: 源代码仓库:https://gitlab.com/9tripod/x3288_linux_new 百度云文档资料: 链接:http://pan.baidu.com/s/1qYcsAaK    密码:wmvi 更多可查看九鼎创展社区:http://bbs.9tripod.com/forum.php?mod=fo

k8s API资源对象

API资源对象Deployment 最小的资源是pod,deployment是多个pod的集合(多个副本实现高可用、负载均衡等)。 使用yaml文件来配置、部署资源对象。 Deployment YAML示例: vi  ng-deploy.yaml apiVersion: apps/v1kind: Deploymentmetadata:labels:app: myngname: ng-de

unity 手游资源优化

1. 单位,比例统一    在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样,模型与模型之间的比例要正确,和程序的导入单位一致,即便到程序需要缩放也可以统一调整缩放比例。统一单位为米。 2. 模型规范  ⒈ 所有角色模型最好站立在原点。没有特定要求下,必须以物体对象中心为轴心。  ⒉ 面数的控制。移动设备每个网格模型控制在300-1500个多边形将会达到比较好的效果。