我正在UNITY开展游戏。到目前为止,对于这个游戏,我有3个我希望定位的立方体。我将它们设置在一个数组中,当我按Tab键时,目标会根据距离在它们之间切换。这一切都很好,但我遇到了泡菜,我希望我的目标立方体变为红色以进行视觉表现。我在Youtube上看到人们使用了以下代码行:
selectedTarget.renderer.material.color = Color.red;
然而,这对我不起作用。然后我看到一条评论说: 不推荐使用渲染函数。下面应该工作......
selectedTarget.GetComponent<Renderer>().material.color = Color.red;
此代码对我也不起作用。我不会错过任何错误,它运行良好,但立方体不会变红。有没有人知道我这样做是否合适?我将在下面发布整个脚本,我所在的代码在selectedTarget()中。任何帮助将不胜感激,谢谢!
private void SelectTarget(){
selectedTarget.renderer.material.color = Color.red;
}
答案 0 :(得分:0)
我遇到了非常非常相同的问题。我没有错。您需要能够在材质上设置颜色属性,并且只有CERTAIN着色器具有此颜色属性。我不得不使用例如Self-Illuminated / Bumped而不是Mobile / VertexLit。然后更改颜色应该没问题,因为您可以在编辑器/检查器中看到Main Color属性。
还要确保您的网格物体具有材质。如果您没有材料,即使它是空白的,也不是占位符,否则它将无法工作!我创造了一种纹理,最好是白色,小的,像5x5。然后将纹理附加到您的立方体。贴上它后就可以上色了!
我在使用Color.Lerp的游戏中做了很酷的事情,它会从一种颜色淡化到另一种颜色!当玩家被敌人击中表示伤害时,下面的示例将乒乓球从白色拨到红色!
transform.renderer.material.color = Color.Lerp(Color.white, Color.red, Mathf.PingPong(Time.time * 3 * speedLerp, 1.0));
答案 1 :(得分:0)
这对我有用。
using UnityEngine;
using System.Collections;
public class Tile : MonoBehaviour {
public Vector2 gridPos = Vector2.zero;
Renderer r;
public Color colorStart = Color.red;
public Color colorEnd = Color.green;
public float duration = 1.0F;
private float lerp;
// Use this for initialization
void Start () {
r = GetComponent<Renderer>();
lerp = Mathf.PingPong(Time.time, duration) / duration;
}
// Update is called once per frame
void Update () {
}
void OnMouseEnter()
{
r.material.color = Color.Lerp(colorStart, colorEnd, lerp);
//r.material.color = Color.black;
Debug.Log("X pos = "+ gridPos.x + "Y pos = "+ gridPos.y);
}
void OnMouseExit()
{
r.material.color = Color.Lerp(Color.white, Color.white,lerp);
}
}
答案 2 :(得分:-2)
设置颜色的bool类型,如
bool colorchange = false;
{{1}}