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

来源:程序员客栈时间:2023-04-19 17:37:45

一种3D截图方案

背景

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


(资料图片仅供参考)

效果

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

环境Cocos Creator 3.7.1Web 浏览器原理

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

3D相机生成一个RT 赋予给2D精灵摆上一些二维码等UIUI相机再生成一张RT读取RT中的数据,传给 canvascanvas 生成图片数据传给 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年版

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

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

标签:

相关阅读

推荐阅读

南京发布房票安置政策 新购房屋将免征契税

南京发布房票安置政策 新购房屋将免征契税

南京市建委牵头印发 《南京市国有土地上住宅房屋征收房票安置暂行办法》(简称《暂行办法》),明确当购房成交价格不超过房票票面金额时,新 更多

2023-03-27 10:44:55
今日最新!2023年一级建造师《工程经济》历年真题精选0326_一级建造师

今日最新!2023年一级建造师《工程经济》历年真题

2023年一级建造师《工程经济》考试共80题,分为单选题和多选题。小编为您整理历年真题10道,附答案解析,供您考前自测提升!1、下列经济效果评更多

2023-03-27 10:12:28
600377股票 有色金属股票还没有涨停的有哪些 天天速读

600377股票 有色金属股票还没有涨停的有哪些 天

最近小编看到大家都在讨论600377股票 有色金属股票还没有涨停的有 更多

2023-03-27 09:58:50
预计今春沙尘过程偏多,沙尘天气是否呈现变多趋势?

预计今春沙尘过程偏多,沙尘天气是否呈现变多趋势

近日,今年以来强度最强、影响范围最广的沙尘天气侵袭多地,波及20个省(区、市),影响面积超过485万平方公里。本次过程强度达到强沙尘暴等级更多

2023-03-27 09:54:47
央行2月金融数据出炉!钱去哪了扬城住户存款增20.3%

央行2月金融数据出炉!钱去哪了扬城住户存款增20.3%

近日,央行2月金融数据出炉,记者从中国人民银行扬州中心支行获悉,2月末扬城住户存款余额5540 8亿元,银行存款产品备受青睐。为何市民偏爱银更多

2023-03-27 09:38:56
快资讯:3亩鱼池成“聚宝盆”每年40万尾小金鱼批量流向全国

快资讯:3亩鱼池成“聚宝盆”每年40万尾小金鱼批

陆兆生和他的金鱼池。司新利摄3亩多地的面积,被分割成56个鱼池,里面游动着一尾尾色彩艳丽的小金鱼,像一朵朵花儿在水中绽放,这就是景区城北更多

2023-03-27 09:49:50
小额贷款利息-我想问一下小额贷款一般利息多少

小额贷款利息-我想问一下小额贷款一般利息多少

最近这段时间总有小伙伴问小编小额贷款利息-我想问一下小额贷款一般 更多

2023-03-27 08:54:27
主板注册制第一股今日开启网上申购 有哪些变与不变?

主板注册制第一股今日开启网上申购 有哪些变与不

3月27日,沪市主板注册制第一股中重科技(603135)、深市主板注册制第一股登康口腔(001328)将进行新股申购。根据发行安排,首批沪深主板注册制新更多

2023-03-27 07:54:18
+ 点击查看更多精彩
今日最新!2023年一级建造师《工程经济》历年真题精选0326_一级建造师
    2023年一级建造师《工程经济》考试共80题,分为单选题和多选题。...
600377股票 有色金属股票还没有涨停的有哪些 天天速读
    最近小编看到大家都在讨论600377股票 有色金属股票还没有涨停的有
预计今春沙尘过程偏多,沙尘天气是否呈现变多趋势?
    近日,今年以来强度最强、影响范围最广的沙尘天气侵袭多地,波及2...
央行2月金融数据出炉!钱去哪了扬城住户存款增20.3%
    近日,央行2月金融数据出炉,记者从中国人民银行扬州中心支行获悉...
快资讯:3亩鱼池成“聚宝盆”每年40万尾小金鱼批量流向全国
    陆兆生和他的金鱼池。司新利摄3亩多地的面积,被分割成56个鱼池,...
小额贷款利息-我想问一下小额贷款一般利息多少
    最近这段时间总有小伙伴问小编小额贷款利息-我想问一下小额贷款一...