我在堆栈中看到这个主题,但我认为这是错误的 使对象“透明”以便无法看到它并不是最有效的方法。你想要做的是让渲染器在你不想看到它时处于非活动状态,并在你这样做时激活。
如果在编辑器中单击gameObject
,则应该有一个网格渲染器作为其中一个组件。
要从附加到同一gameObject
的脚本将其设置为无效,您可以执行此操作...
gameObject.GetComponent<Renderer> ().enabled = false;
如果你真的想使用透明度,你可以这样做......
gameObject.GetComponent<Renderer> ().material.color.a = 0;
虽然如果要设置透明度,则需要确保材质使用的着色器支持透明度。我建议使用Legacy Shaders / Transparent Diffuse着色器。
我如何使用:
gameObject.GetComponent<Renderer> ().material.color.a = 0;
答案 0 :(得分:4)
对于那些可能仍会遇到此问题的人,gameObject.GetComponent<Renderer> ().material.color
不是变量。创建一个变量:
var trans = 0.5f;
var col = gameObject.GetComponent<Renderer> ().material.color;
然后分配你的值:
col.a = trans;
另请注意,并非所有着色器都具有_Color
属性。在我的情况下,我不得不使用:
var col = gameObject.GetComponent<Renderer> ().material.GetColor("_TintColor");
答案 1 :(得分:1)
我如何使用:
gameObject.GetComponent<Renderer> ().material.color.a = 0;
正如您在自己的问题中所说,您调用它的对象必须有一个支持透明度的着色器。在Unity5中,使用标准着色器时,必须将其明确设置为&#34; Transparent&#34;能够操纵alpha值。
您还应该清楚,Alpha值是float
,从0.0f
到1.0f
,例如设置
gameObject.GetComponent<Renderer> ().material.color.a = 0.5f;
将使对象50%透明。
答案 2 :(得分:0)
Transparent
。然后,添加以下脚本。
使用UnityEngine;
公共类MakeTransparent:MonoBehaviour { 公共GameObject currentGameObject; 公众持股Alpha = 0.5f; //半透明
void Start()
{
currentGameObject = gameObject;
}
void Update()
{
ChangeAlpha(currentGameObject.GetComponent<Renderer>().material, alpha);
}
void ChangeAlpha(Material mat, float alphaVal)
{
Color oldColor = mat.color;
Color newColor = new Color(oldColor.r, oldColor.g, oldColor.b, alphaVal);
mat.SetColor("_Color", newColor);
}
}
在运行时更改检查器中的alpha值。
答案 3 :(得分:-2)
尝试这种方式
var other : GameObject;
other.renderer.material.color.a = 0.5f; // 50 % transparent
other.renderer.material.color.a = 1.0f; // 100% visible