截图!长按保存分享!Cocos Creator

时间:2023-04-25 15:57:45 来源: 程序员客栈

一种3D截图方案


【资料图】

背景

参考 TRUE SPACE with Cocos 技术分享[1]中的动态生成海报的介绍,以及作者的支持。实现一个长按保存分享截图的方案。

效果

在微信浏览器中预览效果如下

环境

Cocos Creator 3.7.1

Web 浏览器

原理

原作者讲的非常清楚,只需要按照以下步骤实现即可。

3D相机生成一个RT 赋予给2D精灵

摆上一些二维码等UI

UI相机再生成一张RT

读取RT中的数据,传给 canvas

canvas 生成图片数据传给 Image

适配Image对象大小位置

视频

录了一段操作视频[2]供大家参考。

代码

这段代码的截图功能是按照高度适配的方式写的,如有其他需求,可自行修改相关逻辑。仅供大家参考学习。

import{_decorator,Component,Node,Camera,RenderTexture,view,UITransform,log,game,screen,NodeEventType}from"cc";const{ccclass,property}=_decorator;@ccclass("CaptureImage")exportclassCaptureImageextendsComponent{@property(Camera)copyCamera:Camera=null!;@property(Node)targetNode:Node=null!;@property(Node)captureBtn:Node=null!;@property(Node)closeBtn:Node=null!;rt:RenderTextureprivate_image:HTMLImageElement_canvas:HTMLCanvasElement=null!;_buffer:ArrayBufferView=null!;start(){log("欢迎关注微信公众号【白玉无冰】https://mp.weixin.qq.com/s/4WwCjWBtZNnONh8hZ7JVDA")this.rt=newRenderTexture();this.rt.reset({width:view.getVisibleSize().width,height:view.getVisibleSize().height,})this.copyCamera.targetTexture=this.rt;this.captureBtn.active=true;this.closeBtn.active=false;this.captureBtn.on(NodeEventType.TOUCH_END,this.copyRenderTex,this)this.closeBtn.on(NodeEventType.TOUCH_END,this.clearCapture,this)}privatecopyRenderTex(){constwidth=this.targetNode.getComponent(UITransform).width;constheight=this.targetNode.getComponent(UITransform).height;constanchorPoint=this.targetNode.getComponent(UITransform).anchorPoint;constworldPos=this.targetNode.getWorldPosition();this._buffer=this.rt.readPixels(Math.round(worldPos.x-width*anchorPoint.x),Math.round(worldPos.y-height*anchorPoint.y),width,height);if(!this._canvas){this._canvas=document.createElement("canvas");this._canvas.width=width;this._canvas.height=height;}else{letctx=this._canvas.getContext("2d");ctx.clearRect(0,0,this._canvas.width,this._canvas.height);}letctx=this._canvas.getContext("2d")!;letrowBytes=width*4;for(letrow=0;row

其他

最近写文偏笔记的形式,主要是记录一下代码,下次要用的时候再翻出来。希望对大家有所帮助。

参考资料

[1]

TRUE SPACE with Cocos 技术分享:https://forum.cocos.org/t/topic/146459

[2]

视频:https://www.bilibili.com/video/BV1w84y1N7XQ

往期精彩:

3DUI Cocos Creator

三渲二 Cocos Creator

零代码实现面片效果(UV滚动,帧动画) Cocos Creator

游戏开发资料合集,2022年版

点击“阅读原文”查看精选导航

“点赞“ ”在看”鼓励一下▼

标签:

精彩推送

看点:智度股份(000676)4月21日主力资金净卖出6352.24万元

截至2023年4月21日收盘,智度股份(000676)报收于6 17元,下跌8 18%,换手率4 34%,成交量54 76万手,成交额3 5亿元。

来源:2023.04.24

库里:我们必须得在客场赢一场才能晋级 最好是G5

库里:我们必须得在客场赢一场才能晋级最好是G5,勇士,美国篮球,nba季后赛,斯蒂芬·库里

来源:2023.04.24

【世界报资讯】富荣基金管理有限公司旗下全部基金2023年第1季度报告提示性公告

本公司董事会及董事保证基金季度报告所载资料不存在虚假记载、误导性陈述或重大遗漏,并对其内容的真实性、

来源:2023.04.24

天天速讯:万东医疗:4月21日融券卖出金额6.05万元,占当日流出金额的0.08%

同花顺数据中心显示,万东医疗4月21日获融资买入1432 08万元,占当日买入金额的20 39%,当前融资余额8 99亿

来源:2023.04.24

歌词的力量作文 歌曲的力量助我成长作文

1、歌词的力量2、正文我对自己总是半信半疑,做什么都很懒散,很自卑。对自己的梦想也是如此,跌倒了,不知

来源:2023.04.24

天天速递!读书之美丨阅读的力量|全球微速讯

你有多久,没有翻开一本书了也许是没有了曾经读书时的心境也许是被生活的洪流推着忘记了手边的书我相信你是

来源:2023.04.24

动态图片gif怎么制作_你知道吗

解答:1、以Premiere为例。打开Premiere,点击新建项目。2、输入名称,选择存储路径并确认。3、从工具栏中选

来源:2023.04.24

天天即时:高龄能不能转行做程序员?

大家好,我是良许。在我的直播间,每天晚上都有人在问,我今年30多岁了,还能不能转行做程序员呢?我一般都

来源:2023.04.24

热讯:海关总署副署长王令浚会见克罗地亚外交部国务秘书马图斯奇

据海关总署4月23日消息,4月21日上午,海关总署副署长王令浚在署会见克罗地亚外交部国务秘书弗拉诺& 183;马

来源:2023.04.24

新闻快讯

X 关闭

X 关闭

新闻快讯