Unity3D摄像机带透明截图

转载请注明出处:http://www.cnblogs.com/shamoyuu/p/CropCamera.html

↓↓↓下面的废话可以不看↓↓↓

最近处理了一批我的游戏的图标,步骤特别繁琐,

需要先摆好位置,截图,然后PS处理透明,然后合成到宫格图里,

而且一次只能处理一个,一个就要好几分钟,总共好几十个,后期肯定会有好几百甚至上千个,真是要了命了

然后昨天睡觉前就想,为什么不自动处理呢,我们程序员不就应该懒一点吗

然后就打算写一个,其他的步骤都比较简单,所以这里只放出透明截图的做法。

↓↓↓下面是正文↓↓↓

直接贴代码

using System;
using UnityEngine;
using System.IO;

public class CropPicture : MonoBehaviour
{
    public Camera cropCamera; //待截图的目标摄像机
    RenderTexture renderTexture;
    Texture2D texture2D;

    void Start()
    {
        renderTexture = new RenderTexture(800, 600, 32);
        texture2D = new Texture2D(800, 600, TextureFormat.ARGB32, false);
        cropCamera.targetTexture = renderTexture;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            RenderTexture.active = renderTexture;
            texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
            texture2D.Apply();
            RenderTexture.active = null;

            byte[] bytes = texture2D.EncodeToPNG();
            File.WriteAllBytes(Application.dataPath + "//pic//" + (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds + ".png", bytes);
        }
    }
}

然后把这个脚本拖到主摄像机上

新建一个需要截图的摄像机,为什么需要新建呢?因为它不能有天空盒。

然后把这个摄像机物体拖到主摄像机CropPicture脚本上的CropCamera变量上

然后设置这个需要截图的摄像机的属性如下

颜色这里只要A是0就可以了,其他3个随意

在工程目录下新建一个pic文件夹,然后运行,按空格就截图了

时间: 2024-10-13 22:44:07

Unity3D摄像机带透明截图的相关文章

Unity3D自带地形系统的创建与简单设置图文详解

 先来创建一个新项目,命名为TankWar,以后的相关文件都放置在这个文件夹下面. 创建完毕之后是一个空白的工程,只有一个Camera在场景中. CTRL+S将该场景存档为TankWar0.1,做好版本控制. 我们点击Terrain,选中Create Teerain,便创建了一个地形: 可以看到地形的默认坐标就是0,0,0,我们调整摄像机的位置以便及时观察地形. 选中摄像机后,按下W是调整坐标,按下E是旋转变换,按下R是放缩变换. 调整后场景有点暗,再添加一个灯光:GameObject->C

任意两张带透明图像的一种形状过渡效果

一直想要一个Flash 那种形状渐变效果,这两天苦思冥想了一番实现了,先看效果. 一开始是往把贴图alpha通道识别成路径,建模想办法拉顶点的方向去,想来想去不是个好办法,后来还是决定直接基于位图实现,尽量采用gpu可以处理的方式. 然后往这边思考后,脑子里就浮现出了ditance field 这个概念,alpha表达的还是颜色,直接插值alpha会呈现出颜色渐变的结果. 而distance field 反映的是离边的远近,插值他就会呈现出每个像素离边的距离的变化. 确定方案后就是实现了. 我采

unity3d摄像机参数解释

unity3d摄像机参数 1. Clear Flags:清除标记.决定屏幕的哪部分将被清除.一般用户使用对台摄像机来描绘不同游戏对象的情况,有3中模式选择: Skybox:天空盒.默认模式.在屏幕中的空白部分将显示当前摄像机的天空盒.如果当前摄像机没有设置天空盒,会默认用Background色. Solid Color:纯色.选择该模式屏幕上的空白部分将显示当前摄像机的background色. Depth only:仅深度.该模式用于游戏对象不希望被裁剪的情况. Dont Clear:不清除.该

Unity3D自带Demo AngryBots路径

[Unity3D自带Demo AngryBots路径] 1.Windows: C:\Users\Public\Documents\Unity Porjects 2.MacOSX: /Users/Shared/Unity 工程目录名均为:4-0_AngryBots. Unity3D自带Demo AngryBots路径

如何给win7自带的截图工具设置快捷键

win7自带的截图工具很好,很强大,比从网上下载的截图工具好用多了,很少会出现问题.但是它能不能像QQ截图工具一样可以使用快捷键呢?今天小编和大家分享下心得,希望能够给你的工作带来快捷. 工具/原料 win7自带截图工具 方法/步骤 第一步:点击左下角的"开始"图标,点击"所有程序",如图所示 第二步:出现系统安装的所有程序的名字,找到"附件"--"截图工具",如图所示 第三步:右键单击"截图工具",选择&

unity3d摄像机

主要来自unity3d reference,再加上一些自己的理解 一 概述 摄像头是用于将世界场景投影到屏幕的设备.可以在场景中放置不限数目的摄像机,它们可以设定成任意的渲染次序,渲染到屏幕上的任意地方. 摄 像机实质上是用于将游戏显示给玩家看,它们可以被定制,在上面写脚本或者挂载到其他物体上面以获得想象中的各种效果.对于一个猜谜的游戏,可能只需对游戏 的全部视图保持摄像机静止即可.对于第一人称的射击游戏,常会将摄像机挂载到玩家角色上面,将其放置在角色眼睛的高度.对于一个赛车游戏,可能会让摄像机

Unity3D 摄像机(Camera)

在Unity中创建一个Camera后,除了默认带一个Transform组件外,还会附带Flare Layer.GUI Layer.Audio Listener4个组件 ClearFlags:清除标记:决定屏幕中哪部分被清除.一般用于多台摄像机来描绘不同对象的情况,有一下三种模式. Skybox:天空盒(默认项).在屏幕空白处显示当前摄像机的天空盒,如果没有指定天空盒,则会显示默认背景色. Solid Color:如果没有设置天空盒,将默认显示此处设置的背景色. Depth only:仅深度,该模

unity3d 摄像机跟随角色时被物体遮挡解决方案

参考文章:http://www.xuanyusong.com/archives/1991 在看此文章时请先看上面的参考文章 看完以上文章后,你也许会想人家都已经给出所有代码了,你还写个毛啊 别急,现在进入主题 在我的项目中,我采用的是物体遮挡作半透明处理,如果按照上述文章中的思路来写代码的话,那么结果就是当多个物体遮挡角色时,只有第一个物体会半透明,如图: 角色被墙和屋顶遮挡住了,但是可以清楚的看见左下角的墙呈半透明状态,而屋顶依旧不透明 为了解决这个问题,我们不采用上述文章中的 physics

(转)Unity3d的3种截图方法

下面是我总结的.在u3d中的,三种截屏方法: 1.使用Application类下的CaptureScreenshot方法. void CaptureScreen() { Application.CaptureScreenshot("Screenshot.png", 0); } 这个方法,截取的是某一帧时整个游戏的画面,或者说是全屏截图吧. a.不能针对某一个相机(camera)的画面,进行截图. b.对局部画面截图,实现起来不方便,效率也低,不建议在项目中使用: 虽然CaptureSc