2015-04-22 69 views
2

我正在UNITY開發一款遊戲。對於這個遊戲,我有3個立方體,我希望瞄準。我讓他們設置在一個數組中,當我點擊標籤時,目標之間的距離切換。這一切都很好,但我碰到了一個泡菜,而且我希望我的目標立方體變爲紅色以便視覺呈現。我在Youtube上看到人們使用下面這行代碼:用統一的C設置材質顏色#

selectedTarget.renderer.material.color = Color.red; 

但是這對我不起作用。然後我看到一條評論: 渲染函數已被棄用。下面應該工作...

selectedTarget.GetComponent<Renderer>().material.color = Color.red; 

此代碼不適用於我。我沒有任何錯誤在意你,它運行良好,但立方體不會變紅。有沒有人知道我是否在做這件事?我將在後面發佈整個腳本,並且我所關注的代碼位於selectedTarget()中。任何幫助將不勝感激,謝謝!

private void SelectTarget(){ 
    selectedTarget.renderer.material.color = Color.red; 
} 
+0

您確定正在調用SelectTarget嗎?你可以用調試器遍歷你的代碼,或者添加一個簡單的['Debug.Log'](http://docs.unity3d.com/ScriptReference/Debug.Log.html)消息,該消息應該顯示在你的控制檯窗口中。 – rutter

+0

是的,當我運行的遊戲,我可以看到他在側窗改變活動目標:) –

回答

0

我有非常非常非常相同的問題。我沒有錯誤。您需要能夠在材質上設置顏色屬性,並且只有特定着色器具有此顏色屬性。我不得不使用例如Mobile/VertexLit來代替Self-Illuminated/Bumped。然後改變顏色應該沒問題,因爲您可以在編輯器/檢查器中看到Main Color屬性。

還要確保您的網格物料。如果你沒有材料,即使它是空白或佔位符,它也不會工作!我會創建一個紋理,最好是白色的,像5x5一樣小。然後將紋理附加到您的多維數據集。附加後,您可以着色!

我在Color.Lerp的遊戲中做了很酷的東西,它會從一種顏色褪色到下一種!下面這個例子是當玩家被一個敵人擊中指示傷害時,從白色到紅色的乒乓。

transform.renderer.material.color = Color.Lerp(Color.white, Color.red, Mathf.PingPong(Time.time * 3 * speedLerp, 1.0)); 
+0

我不能投票你的答案,但需要更多代表,但是我很高興我不是唯一的,但我不完全明白你的意思,因爲我是UNITY的新手抱歉 –

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

設置顏色bool類型等

布爾colorchange = FALSE;

public void OnCollisionEnter (Collision col) 
    { 


      Debug.Log ("collide"); 

      colorchange = true; 

      if (colorchange) { 
        transform.GetComponent<Renderer>().material.color = Color.red; 
      } 
    } 
+1

這裏沒有必要使用布爾,看起來好像你一碰撞就把它變成「真」。代碼可以縮小到'public void OnCollisionEnter(Collision col){transform.GetComponent ().material.color = Color.red; }「它仍然會做同樣的事情。 – Tom

相關問題