全球观点:截图!长按保存分享!Cocos Creator
2023-03-18 07:42:23来源:程序员客栈
背景一种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年版
点击“阅读原文”查看精选导航
“点赞“ ”在看”鼓励一下▼
本网推荐
- 全球观点:截图!长按保存分享!Cocos Creator
- 花开蝶满枝 树倒猢狲散|天天亮点
- 小车故障滞留高速 收费员暖心相助_全球最资讯
- 太阳的资料简介_太阳资料 天天热点评
- 上市以来首次营收下滑 阅文集团高层谈IP开发“长期主义”思路
- 麦澜德(688273)3月17日主力资金净卖出78.77万元-环球信息
- NBA最新排名!掘金锁定季后赛席位,雄鹿遇冷,太阳结束3连败
- 土耳其总统谈芬兰“入约” 可为芬兰“开绿灯”
- 全球观热点:释放用人主体活力 哈尔滨实施“人才新政30条”
- 每日消息!美柳千奈美角色出处_美柳千奈美
- 每日消息!醒世姻缘传全集_醒世姻缘
- 能辉科技: 关于2023年度日常关联交易预计的公告|全球观速讯
- 安徽省黄山林业学校校志_1956-1988
- 世界微速讯:长荣股份:公司进口零部件核心供应商出现频繁涨价且交货期延长相关情形暂时未见明显好转
- 又“倒下”一家,家乐福南亚店被要求撤场搬离
- 全球快播:我的姐姐是大明星番外_我的姐姐结局
- ipad照片和iphone同步怎么关闭_天天速讯
- 极度恐慌在线观看_极度恐慌阿尔玛
- cf骂人空白代码_cf骂人空白复制
- 精彩看点:女的用鞭子做武器_女子鞭刑屁股
- 挖掘机培训学校学费多少钱_挖掘机培训学校学费|环球热点评
- 横琴与澳门合力打造特色放心消费环境
- 天天观天下!海陆重工:公司控股股东收到行政处罚事先告知书
- (加急)石家庄汇融银行西三庄支行开展“3.15”权益保护宣传活动
- 小班体育活动跑_幼儿园小班体育游戏跑
- 当前快播:什么是vr眼镜_什么是vr
- 初中欧姆定律专项训练_初中欧姆定律练习题
- 狐大医 | 胆囊息肉怕恶变?超声造影来帮忙 今日精选
- 两会已结束,这六个与民众息息相关问题,有可能会迎来变化!-天天时快讯
- 世界快资讯丨国际奥委会:多数法国人欢迎俄白两国选手以中立身份参加巴黎奥运会