Cocos Creator 3.8 实现指定Node节点截图功能教程

Cocos Creator 3.8 实现指定Node节点截图功能教程

一、前言

在游戏开发中,截图功能是一项常见且实用的需求,它可以用于生成分享图片、保存游戏成就或创建预览图等。本教程将详细介绍如何在 Cocos Creator 3.8 中实现指定 Node 节点的截图功能,并将结果渲染到 Sprite 上。


二、功能实现原理

截图功能的核心原理是利用 Cocos Creator 的 Camera 组件和 RenderTexture(渲染纹理)。Camera 会将指定节点的内容渲染到 RenderTexture 上,然后我们可以从 RenderTexture 中读取像素数据,最终将其转换为图片或显示在 UI 上

关键组件:

  • Camera:负责捕获节点视觉内容
  • RenderTexture:作为渲染目标,存储图像数据
  • SpriteFrame:将渲染纹理转换为可显示的精灵帧

三、场景配置步骤

1. 配置目标节点

  • 将需要截图的节点连接到脚本的targetNode属性
  • 自定义一个capturelayer, 并将目标节点的layer设置为capture,同时主相机的Visibility也需要添加该layer
  • 确保节点在相机范围内可见

2. 设置预览节点:

  • 创建一个UI节点并添加Sprite组件
  • 将这个节点连接到脚本的previewNode属性

3. 创建截图专用相机:

  • 在目标节点中添加一个新Camera节点,创建到目标节点可以保证节点移动的时候相机会跟随移动
  • 调整相机位置和参数,使其能完整看到目标节点
  • 将相机组件的Target Texture属性留空(代码中动态设置)
  • 并将相机组件的Visibility设置为capture这一个,保证最终截图的只显示想要的内容

节点截图预览

相机参数截图预览

四、核心代码

需要注意的问题

  1. 图像缩放问题
    • 最终的宽高计算需要注意缩放的问题
  2. 截图空白或不全的问题
    • 相机的orthoHeight 设置为高度的一半(截图代码写的是宽度一半只有正方形的才不会有问题,已更正)

五、注意事项与优化建议

  1. 图像翻转问题

    • Cocos Creator渲染的图像数据是倒置的,需要通过代码手动翻转
  2. 渲染时机

    • 使用scheduleOnce延迟读取像素数据,确保渲染完成后再进行读取操作

相关推荐
90后的晨仔15 小时前
从 H5 到 uni-app:一篇写给前端小白的"翻译指南"
前端·vue.js·前端框架
陈随易16 小时前
moon,apt和yum之外linux系统命令安装新选择
前端·后端·程序员
IT小盘16 小时前
13-企业Prompt模板-角色任务约束与输出格式
java·前端·prompt
徐小夕17 小时前
开源!我用SQLite + DuckDB打造了一款可视化AI问数平台
前端·算法·github
leslie11817 小时前
babel笔记
前端
用户0595401744618 小时前
Redis 记忆存储踩坑实录:一个并发写入 Bug 让我排查了 4 小时
前端·css
小徐_233318 小时前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·微信小程序·uni-app
kyriewen19 小时前
Claude自己跑出去hack了3家公司——我为什么还在用它写代码
前端·ai编程·claude
IT_陈寒19 小时前
SpringBoot自动配置的坑,这次真踩疼我了
前端·人工智能·后端
子兮曰19 小时前
AI 浏览器 Agent 的安全困局:当自动化工具可以偷走你的登录态
前端·人工智能·后端