最近在做一个小项目,需要将模型作为UI显示在屏幕上,所以使用了RenderTexture。制作过程大概为新建一个摄像机对准模型物体,新建RenderTexture被这个摄像机引用,摄像机背景设为透明。使用NGUI,新建一个UITexture,将此RederTexture作为材质赋给它。而该模型为了实现半透明效果用了Transparent/Deffuse的Shader。设想中此时半透明的模型渲染在屏幕上了,但此时问题出现了,屏幕上空空如也!如果此时我们试着把摄像机背景从0调高的时候,物体会出现,它的透明的似乎随着摄像机的背景的透明度在变化,而尴尬的是我们不需要摄像机背景,不管是天空盒也好还是颜色也好。问题就是物体会随着摄像机的背景而隐去。排查之后问题出现在模型的材质上,也就是Transparent/Diffuse的Shader上。当我们用普通的Diffuse的Shader的时候模型完整地显示在屏幕上,摄像机背景也为透明,只是无法实现模型的半透明的效果。本人水平有限,一直百思不得其解,物体单独使用了一个材质,为什么它的半透明图像会随着摄像机背景而隐去?直到最近接触了Shader。该问题已经解决,但其中的原理还没搞清楚。解决方法是我们要实现物体的半透明效果,但不能使用Unity自带的Transparent/Diffuse的Shader。自己写一个最简单的Shader即可。新建Shader,代码如下:
Shader "Custom/Transparent"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = &#