使用C#,如何在我的emissive属性上设置float?

时间:2015-07-18 20:54:38

标签: c# unity3d

在Unity3D中,我试图在我的刹车灯材料上的自发光属性上设置浮动 - 但是没有任何运气。

这是我的C#代码:

using UnityEngine;
using System.Collections;

public class BrakeLights : MonoBehaviour {

    private Renderer Brakes;

    // Use this for initialization
    void Start () {
        Brakes = GetComponent<Renderer>();
        Brakes.material.shader = Shader.Find("Standard");
        Brakes.material.EnableKeyword("_EMISSION");
    }

    // Update is called once per frame
    void Update(){
        //Brake lights
        if(Input.GetKey(KeyCode.Space)){
            Brakes.material.SetFloat("_Emission", 1.0f);
            Debug.Log (Brakes.material.shader);
        }else{
            Brakes.material.SetFloat("_Emission", 0f);
            Debug.Log ("Brakes OFF");
        }
    }
}

我在这里缺少什么?我在控制台中也没有出现任何错误,当我按空格键时,我的调试日志会在运行时显示。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现使用发光颜色成功,而不是为其强度设置浮点值。因此,例如,我将发光颜色设置为黑色,没有强度/发射,并指定红色(在我的情况下),使材料发红光。

我也意识到我必须使用传统着色器才能工作。

以下是有效的代码:

using UnityEngine;
using System.Collections;

public class Intensity : MonoBehaviour {

    private Renderer rend;

    // Use this for initialization
    void Start () {

        rend = GetComponent<Renderer> ();
        rend.material.shader = Shader.Find ("Legacy Shaders/VertexLit");
        rend.material.SetColor("_Emission", Color.black);
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetKey (KeyCode.Space)) {
            rend.material.SetColor ("_Emission", Color.red);
        } else {
            rend.material.SetColor ("_Emission", Color.black);
        }
    }
}