当前位置: 首页 > news >正文

祖传项目二开快上线了,却还有很多旧的资源,怎么办?

点击上方亿元程序员+关注和星标

引言

哈喽大家好,欢迎小伙伴提供的素材:

亿哥晚上好,上次压缩了PNG图片后,图片资源还是非常大。

仔细研究了一下,发现项目里面居然还有很多没用到的祖传资源!

游戏快要上线了,项目里却还有很多旧的资源,怎么办?

通常这样的情况出现于项目的二次开发阶段或者界面效果不好频繁更换的情况。

由于界面的布局发生变化,图片没办法直接覆盖替换,一不小心就有可能会导致旧资源遗忘在项目里,造成“泄漏”。

我们把遗忘的资源删掉不就好了?

是的,前提是要知道哪些资源是已经没被引用了!

言归正传,本期一起来看看,如何在Cocos游戏开发中,自定义插件查看资源被什么资源引用

本文源工程可在文末获取,小伙伴们自行前往。

直接上实例

客官请留步,倒杯茶,咱们本期直接上实例,废话最后再说。

1.创建插件

想要自定义插件查看资源被什么引用,首先要创建我们的插件,通过菜单扩展->创建扩展打开扩展创建面板,选择一个空白模板进行创建并启用插件。

添加个消息findReferences和快捷键ctrl+shift+f

2.插件原理

每个导入项目的资源(图片、音频、prefab、脚本等)都会自动分配一个uuid

这个uuid用于在项目中唯一标识该资源。

通常uuid会在资源文件或者资源的meta文件中。

如上图Main.sceneuuid,或者是在下图的Main.scene.meta文件中:

原理很简单,就是获取当前资源的uuid,然后再去查找其他所有资源,如果其他资源文件的数据中包含了当前资源的uuid,说明当前资源被引用。

3.插件流程

开始->获取选中的资源的uuid->遍历asset目录所有的资源->判断uuid是否在遍历资源的数据中->结束

  • 获取选中的资源的uuidconst selectedUuids = Editor.Selection.getSelected("asset");

  • 遍历asset目录所有的资源:const allAssets = await Editor.Message.request('asset-db', 'query-assets', { pattern: 'db://assets/**/*' });

  • 判断uuid是否在遍历资源的数据中:let assetFile = fs.readFileSync(assetInfo.file, 'utf-8');通过fs模块读取文件内容然后判断是否包含选中资源的uuid

4.效果演示

在插件目录,安装依赖npm install和构建插件npm run build

选中图片资源,按下crtl+shift+f

选中脚本资源,按下crtl+shift+f

整体预览如下:

温馨提示

  • 以上插件功能仅显示选中资源的被引用情况,要查询所有资源的小伙伴可自行修改扩展遍历所有图片资源。

  • 插件仅查找资源被其他资源引用情况,代码中动态加载的资源,需要自行扩展(检索接口或配置)。

  • 除了Bundle包中(包括resources文件夹),没被依赖的资源不会被打到包中。

  • 工具检索是需要的,但是也需要人工对资源进行辨别,特别在上线前,保证不误删在用资源。

结语

以上就是如何查看资源被什么资源引用的全部内容,如有不对,还请小伙伴们指出,欢迎更多的小伙伴进行投稿(素材、文章,硬币等等),感谢支持!

小伙伴们在游戏开发中还遇到哪些有趣的事情呢?

本文源工程可通过私信发送resfinder获取,更多不实用资源可通过阅读原文获取。


我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《打螺丝闯关》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》《方块掌机经典》大家可以自行点击搜索体验。

实不相瞒,想要个爱心!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

知识付费专栏

你知道和不知道的微信小游戏常用API整理,赶紧收藏用起来~

100个Cocos实例

8年主程手把手打造Cocos独立游戏开发框架

和8年游戏主程一起学习设计模式

从零开始开发贪吃蛇小游戏到上线系列

点击下方灰色按钮+关注。

http://www.cnnetsun.cn/news/7039.html

相关文章:

  • 购买高价域名如何选择可靠中介?
  • STM32 CubeIDE(1.18.0) LED闪烁
  • AI动态场景生成:重塑影视创作的技术革命
  • mpv.net媒体播放器:为什么这款Windows播放器能成为技术爱好者的首选?
  • 带带弟弟识别文字验证码报异常问题解决:AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘
  • SG-PNh750-MOD-221(Profinet 转 Modbus RTU 网关)特点与功能介绍
  • 手把手教你用VSCode远程调试量子程序,10分钟快速上手
  • PC小说阅读器终极免费版:打造个性化数字阅读体验
  • 2025全新IDM使用方案:小白也能轻松掌握的终极指南
  • 全开源20亿参数大模型,揭秘清华团队如何突破资源限制训练LLM
  • 深度解析:4大维度构建量化因子归因的实战框架
  • YOLOv5模型瘦身实战:三大轻量化技术深度解析
  • SpringBoot
  • AH40G10是40V 10A双N+P沟道增强型MOSFET
  • 为什么顶尖开发者都在用VSCode做量子编程?真相曝光
  • note-gen AI笔记应用快速上手:10分钟掌握高效知识管理技巧
  • 东莞自动化设备工厂8个solidworks、caxa研发共用一台服务器
  • 全球国家编码数据宝库:一站式解决国际标准化需求 [特殊字符]
  • aio-switch-updater终极指南:Nintendo Switch定制化完全教程
  • Wan2.2-T2V-5B可用于博物馆展品动态复原展示
  • typing和dataclass
  • MindSpore网络编译问题BuildModel error 134
  • 拼多多PHP SDK:5分钟搞定电商API集成,让开发效率翻倍 [特殊字符]
  • Node-RED Dashboard实战指南:零基础构建专业数据可视化界面
  • 3分钟掌握nodeppt Mermaid插件:让你的演示文稿从此告别图片导入烦恼
  • 5分钟掌握dnd-kit网格对齐:React拖拽开发终极指南
  • 5分钟掌握WheelPicker:Android选择器的终极开发指南
  • ANTLR4 C++ 终极指南:从语法解析到高性能应用开发
  • 突破性音源!洛雪音乐实现全网音乐一键获取
  • BGP、OSPF、EIGRP,哪种协议用在哪?一文全讲透!