本节书摘来自华章社区《Unity开发实战》一书中的第2章,第2.5节从屏幕内容制作纹理,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看
2.5 从屏幕内容制作纹理
本节会介绍如何从屏幕内容制作纹理。想在游戏中实现图片库或在场景的最后显示重要时刻的快照时,该功能则非常有用(竞速游戏和特技游戏中用得比较多)。
2.5.1 准备工作
示例代码中名为“0423_02_04_05”的文件夹中有一个名为basicTerrain的包需要导入,此包中有一个基础地形和一个可以用鼠标旋转的摄像机。
2.5.2 操作步骤
请按照下面的步骤从屏幕内容创建纹理:
1)将上面提到的包导入到Unity中,打开02_04_05场景。
2)在Project视图中创建脚本,点击Create下拉菜单,选择C# Script,命名为Screen-Texture,在代码编辑器中打开。
3)把脚本替换成下面的代码:
6)播放场景,就可以通过点击鼠标按钮取得快照了(并显示在左上角)。
2.5.3 实现原理
点击鼠标触发了一个功能:从指定矩形中读取像素,并把这些像素应用于纹理,让GUI绘制出来。
2.5.4 更多内容
除了把纹理作为GUI显示的元素外,它还可以用作其他用途。
- 把纹理作为材质
将代码GameObject.Find("MyObject").renderer.material.mainTexture= texture;放在Capture-Screen函数的最后即可把纹理作为已知对象的材质。 - 把纹理作为截屏
可以把纹理解码成PNG图片然后保存,具体请参考Unity的文档:http://docs.unity3d.com/Documentation/ScriptReference/Texture2D.EncodeToPNG.html。