inf*_*ity 2 c# transparency opacity unity-game-engine
我看到这个主题堆积如山,但我认为这是错误的。将对象“透明化”,使它无法被看到并不是最有效的处理方式。您宁愿要做的就是在不想看到渲染器时使其处于非活动状态,而在看到渲染器时使其处于活动状态。
如果gameObject
在编辑器中单击,则应该有一个Mesh Renderer作为组件之一。
要将其设置为从附加到此脚本的脚本无效gameObject
,可以执行此操作...
gameObject.GetComponent<Renderer> ().enabled = false;
Run Code Online (Sandbox Code Playgroud)
如果您真的想使用透明度,则可以执行此操作...
gameObject.GetComponent<Renderer> ().material.color.a = 0;
Run Code Online (Sandbox Code Playgroud)
尽管如果设置透明度,则需要确保材质使用的着色器支持透明度。我建议使用“旧式”着色器/“透明漫反射”着色器。
如何使用:
gameObject.GetComponent<Renderer> ().material.color.a = 0;
Run Code Online (Sandbox Code Playgroud)
对于那些仍然可能遇到这个问题的人来说,gameObject.GetComponent<Renderer> ().material.color
这不是一个变量。这样创建一个变量:
var trans = 0.5f;
var col = gameObject.GetComponent<Renderer> ().material.color;
Run Code Online (Sandbox Code Playgroud)
然后分配您的值:
col.a = trans;
Run Code Online (Sandbox Code Playgroud)
另请注意,并非所有着色器都具有_Color
属性。就我而言,我必须使用:
var col = gameObject.GetComponent<Renderer> ().material.GetColor("_TintColor");
Run Code Online (Sandbox Code Playgroud)
小智 -4
尝试用这种方法
var other : GameObject;
other.renderer.material.color.a = 0.5f; // 50 % transparent
other.renderer.material.color.a = 1.0f; // 100% visible
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32282 次 |
最近记录: |