位置: 编程技术 - 正文

Unity3D游戏开发之如何用U3D截图的技能培训(Unity3D游戏开发毕业论文)

编辑:rootadmin

推荐整理分享Unity3D游戏开发之如何用U3D截图的技能培训(Unity3D游戏开发毕业论文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Unity3D游戏开发(第2版),Unity3D游戏开发基础,Unity3D游戏开发毕业论文,Unity3D游戏开发(第2版)pdf,Unity3D游戏开发(第2版),Unity3D游戏开发(第2版),Unity3D游戏开发毕业论文,Unity3D游戏开发标准教程,内容如对您有帮助,希望把文章链接给更多的朋友!

喜欢我的博客请记住我的名字:秦元培,我的博客地址是 本文出处: 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌

今天我们来做点简单的东西,做个什么呢?答案就是截屏。如图,下面是收集的部分截图:

好了,欣赏完美丽的风景,下面我们就来一起学习在Unity3D实现截屏,先给出实现截屏的三种实现方式:

[csharp] view plaincopyprint?/// <summary> /// 使用Application类下的CaptureScreenshot()方法实现截图 /// 优点:简单,可以快速地截取某一帧的画面、全屏截图 /// 缺点:不能针对摄像机截图,无法进行局部截图 /// </summary> /// <param name="mFileName">M file name.</param> private void CaptureByUnity(string mFileName) { Application.CaptureScreenshot(mFileName,0); } /// <summary> /// 根据一个Rect类型来截取指定范围的屏幕 /// 左下角为(0,0) /// </summary> /// <param name="mRect">M rect.</param> /// <param name="mFileName">M file name.</param> private IEnumerator CaptureByRect(Rect mRect,string mFileName) { //等待渲染线程结束 yield return new WaitForEndOfFrame(); //初始化Texture2D Texture2D mTexture=new Texture2D((int)mRect.width,(int)mRect.height,TextureFormat.RGB,false); //读取屏幕像素信息并存储为纹理数据 mTexture.ReadPixels(mRect,0,0); //应用 mTexture.Apply(); //将图片信息编码为字节信息 byte[] bytes = mTexture.EncodeToPNG(); //保存 System.IO.File.WriteAllBytes(mFileName, bytes); //如果需要可以返回截图 //return mTexture; } private IEnumerator CaptureByCamera(Camera mCamera,Rect mRect,string mFileName) { //等待渲染线程结束 yield return new WaitForEndOfFrame(); //初始化RenderTexture RenderTexture mRender=new RenderTexture((int)mRect.width,(int)mRect.height,0); //设置相机的渲染目标 mCamera.targetTexture=mRender; //开始渲染 mCamera.Render(); //激活渲染贴图读取信息 RenderTexture.active=mRender; Texture2D mTexture=new Texture2D((int)mRect.width,(int)mRect.height,TextureFormat.RGB,false); //读取屏幕像素信息并存储为纹理数据 mTexture.ReadPixels(mRect,0,0); //应用 mTexture.Apply(); //释放相机,销毁渲染贴图 mCamera.targetTexture = null; RenderTexture.active = null; GameObject.Destroy(mRender); //将图片信息编码为字节信息 byte[] bytes = mTexture.EncodeToPNG(); //保存 System.IO.File.WriteAllBytes(mFileName,bytes); //如果需要可以返回截图 //return mTexture; } } 接下来,我们来调用这三个方法实现一个简单的截图的例子:[csharp] view plaincopyprint?//定义图片保存路径 private string mPath1; private string mPath2; private string mPath3; //相机 public Transform CameraTrans; void Start() { //初始化路径 mPath1=Application.dataPath&#;"\ScreenShot\ScreenShot1.png"; mPath2=Application.dataPath&#;"\ScreenShot\ScreenShot2.png"; mPath3=Application.dataPath&#;"\ScreenShot\ScreenShot3.png"; } //主方法,使用UGUI实现 void OnGUI() { if(GUILayout.Button("截图方式1",GUILayout.Height())){ CaptureByUnity(mPath1); } if(GUILayout.Button("截图方式2",GUILayout.Height())){ StartCoroutine(CaptureByRect(new Rect(0,0,,),mPath2)); } if(GUILayout.Button("截图方式3",GUILayout.Height())){ //启用顶视图相机 CameraTrans.camera.enabled=true; //禁用主相机 Camera.main.enabled=false; StartCoroutine(CaptureByCamera(CameraTrans.camera,new Rect(0,0,,),mPath3)); } } 在第三中截图方式中,在场景里放了一个名为TopCamera的摄像机,它垂直向下投影到游戏场景里,这样可以使玩家看到场景的顶视图。这里我们用这个相机来测试第三个方法,此时需要先激活该相机。场景设置如图:

我们下面来看三种方法截图的效果:

Unity3D游戏开发之如何用U3D截图的技能培训(Unity3D游戏开发毕业论文)

从截图的效果来看,第一种方法的效果是最好的,不过定制化是个问题。第二种方法效果一般吧,感觉这里TextureFormat没有选好吧。第三种效果基本达到了想要的要求,不过摄像机的投影范围&#;乎没有设计好。这里我们发现第二张截图会把编辑器的窗口渲染到里面,认为是程序运行的时候,即使将Game窗口放到最大,仍然会受到窗口的影响,后来就把程序编译成可执行文件,不过程序运行完之后,却没有找到对应的截图。后来查找了官方的API才知道原因是这样的:

Description

Contains the path to the game data folder (Read Only).

The value depends on which platform you are running on:

Unity Editor: <path to project folder>/AssetsMac player: <path to player app bundle>/ContentsiPhone player: <path to player app bundle>/<AppName.app>/DataWin player: <path to executablename_Data folder>Web player: The absolute url to the player data file folder (without the actual data file name)Flash: The absolute url to the player data file folder (without the actual data file name)Note that the string returned on a PC will use a forward slash as a folder separator 更多精彩请点击 显然,我们从这里可以知道Application.datapath在不同的平台上对应的位置。对于可执行(.exe,Windows平台)的文件,它对应在和应用程序对应的一个文件夹里,例如可执行文件的名字叫做UnityGame,那么对应的位置就是UnityGame_Data这个文件啦。所以问题应该是出在没有在这里建一个ScreenShot的文件夹,希望大家以后做相关项目的时候注意一下吧。好了,这就是今天的内容了,希望大家喜欢啊。

更多精彩请点击

Unity3D导出exe窗口参数调整培训 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d

NGUI动态创建UILabel 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d

unity3d游戏开发之整合vs来加快unity c#开发 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d

标签: Unity3D游戏开发毕业论文

本文链接地址:https://www.jiuchutong.com/biancheng/372919.html 转载请保留说明!

上一篇:unity常见问题之20题(unity出现bug)

下一篇:Unity3D导出exe窗口参数调整培训(unity导出exe文件)

  • 一次性医用外科口罩哪个牌子好
  • 增值税加计抵减的行业
  • 报税以及注销公司的注意事项?
  • 小规模纳税人劳务派遣差额征税税率
  • 金税盘系统维护注册码
  • 向职工支付困难证明材料
  • 应付账款不需要付怎样做会计分录
  • 发货就要开票吗是真的吗
  • 设计合同需要缴哪些税
  • 保险公司营销人员个人先进事迹材料
  • 土地使用权出让金多少钱一平米
  • 企业将资产移送他人的下列情形
  • 退休人员怎么缴纳城镇居民医保
  • 债权性投资损失账务处理
  • 低价销售差额部分计入
  • 办公设备折旧年限及残值率
  • 下列应税项目中,不按次计算征收个人所得税的是
  • 股东投入的资金要交税吗
  • 在建工程转固后又发生成本
  • etc开了充值发票还可以开消费发票么?
  • 异地工程预缴个税
  • 物业管理公司如何纳税
  • 可抵扣进项税怎么抵扣
  • 中药材免税还能抵扣收购发票
  • 进口增值税计入关税完税价格吗
  • 销售净利率如何分析出来
  • 工程施工预付账款会计分录
  • 生产提供什么产品
  • fsm32.exe是什么进程 有什么作用 fsm32进程查询
  • 代发工资如何合理避税
  • PHP:Memcached::isPersistent()的用法_Memcached类
  • php ftp管理系统
  • php require include
  • 处置子公司的收益
  • 用支票购入厂部办公用品2000元,车间办公用品1000元
  • 酒店装修期间的费用如何核算
  • 摊销专利权会计分录怎么写
  • 外商投资合伙企业有哪些
  • free命令看到的内存
  • 煤炭贸易公司的业务流程
  • WordPress 浏览量修改
  • 未核定月数是什么
  • 软件和硬件如何分开
  • 新会计准则规定
  • 企业回购股票会退市吗
  • SQL Server中的XML数据进行insert、update、delete操作实现代码
  • 物业公司一般纳税人简易征收
  • 小规模企业购入原材料会计分录
  • 税务局的罚款记录怎么查
  • 研发费用加计扣除的条件
  • 现金流量表每月要报吗
  • 英飞拓拟2.1亿出售子公司股权
  • 企业资金如何运动
  • 税务局退回水利基金账务怎么处理
  • 固定资产清理账户期末有余额吗
  • 社保个人部分应该做到哪个科目
  • 弥补以前年度亏损怎么算
  • 车票抵扣进项税怎么计算
  • 作废发票丢失怎么补办
  • mysql5.7.21安装教程
  • mac系统终端命令大全
  • linux那些事儿
  • 在u盘里装win7
  • explorer.exe进程被结束怎么恢复
  • svchos1.exe - svchos1是什么教程 有什么作用
  • 如何重设苹果手机的ID密码
  • hyper虚拟机连接外网
  • unity3d常用代码总结
  • jquery生成div
  • nodejs v8
  • 详细介绍8款超跑车
  • 安卓端数据库
  • android study
  • shell自定义函数以及使用
  • vue分页组件page
  • linux更改
  • 谈一谈你对人与自然关系的认识
  • Unity3D游戏开发标准教程
  • jquery的使用
  • 经营所得专项扣除养老保险费可以全额扣除吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设