赞
踩
Inherits from
YieldInstruction
Waits until the end of the frame after all cameras and GUI is rendered,
just before displaying the frame on screen.
等待直到所有的摄像机和
GUI
被渲染完成后,在该帧显示在屏幕之前。
You can use it to read the display into a texture, encode it as an image
file (see
Texture2D.ReadPixels
and
Texture2D.EncodeToPNG
) and send it
somewhere.
你可以使用它读取显示到纹理
【
狗刨学习网
】,编码它为一个图片文件(参见
Texture2D.ReadPixels
和)并且发送到任意地方。
C#
JavaScript
yield new WaitForEndOfFrame ();
// Saves screenshot as PNG file.
//
保持屏幕为
PNG
文件
import System.IO;
// Take a shot immediately
//
立即截屏
function Start() {
UploadPNG();
}
function UploadPNG() {
// We should only read the screen bufferafter rendering is
complete
//
等待完成后读取屏幕缓存
yield WaitForEndOfFrame();
// Create a texture the size of the screen, RGB24 format
//
创建一个屏幕大小的图片,
RGB24
格式
var width = Screen.width;
var height = Screen.height;
var tex = new Texture2D( width, height, TextureFormat.RGB24,
false );
// Read screen contents into the texture
//
到图片读取屏幕内容
tex.ReadPixels( Rect(0, 0, width, height), 0, 0 );
tex.Apply();
// Encode texture into PNG
//
编码图片为
PNG
格式
var bytes = tex.EncodeToPNG();
Destroy( tex );
//
For
testing
purposes,
also
write
to
a
file
in
the
project
folder
//
出于测试目的,也在工程文件夹保存一个文件
// File.WriteAllBytes(Application.dataPath +
"/../SavedScreen.png", bytes);
// Create a Web Form
//
创建一个
Web
表单
var form = new WWWForm();
form.AddField("frameCount", Time.frameCount.ToString());
form.AddBinaryData("fileUpload",bytes);
// Upload to a cgi script
//
上传到一个
cgi
脚本
var w = WWW("http://localhost/cgi-bin/env.cgi?post", form);
yield w;
if (w.error != null)
print(w.error);
else
print("Finished Uploading Screenshot");
}
// Shows alpha channel contents in the game view.
// Requires Unity Pro as this script uses GL class.
//
在游戏视图中显示
alpha
通道的内容,需要
Unity
Pro
专业版,这个脚本使用
了
GL
类。
private var mat : Material;
// After the frame is completely rendered, we'll
// draw a full screen quad that extracts the alpha channel.
//
在该帧完全渲染之后,我们将绘制一个提取了
alpha
通道的全屏矩形
function Start() {
while (true) {
yield WaitForEndOfFrame();
if( !mat ) {
mat = new Material( "Shader \"Hidden/Alpha\" {"
+
"SubShader {" +
" Pass {" +
" ZTest Always Cull Off ZWrite Off" +
" Blend DstAlpha Zero" +
" Color (1,1,1,1)" +
" }" +
"}" +
"}"
);
}
GL.PushMatrix ();
GL.LoadOrtho ();
for (var i = 0; i < mat.passCount; ++i) {
mat.SetPass (i);
GL.Begin( GL.QUADS );
GL.Vertex3( 0, 0, 0.1 );
GL.Vertex3( 1, 0, 0.1 );
GL.Vertex3( 1, 1, 0.1 );
GL.Vertex3( 0, 1, 0.1 );
GL.End();
}
GL.PopMatrix ();
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。