1

我有一个对象,当它与另一个对象碰撞时会改变它的颜色,并减小它的大小:gameObject.transform.localScale /= 2;但它有一个白色的halo.

我想要halo匹配我的对象的颜色。所以当物体是绿色时,它halo也会是绿色的。如果我的对象是蓝色的,那么它halo也会是蓝色的。另外,我希望当我的对象检测到与其他对象的碰撞时,halo 也减少,我不知道该怎么做。

当我按下屏幕时,代码会改变颜色(蓝色、红色或绿色):

public class ChangeColor : MonoBehaviour {

    public Material[] materials;
    public Renderer rend;

    private int index = 1;

    // Use this for initialization
    void Start () {

        rend = GetComponent<Renderer> ();
        rend.enabled = true;

    }

    public void Update() {
        if (materials.Length == 0) {
            return;
        }
        if (Input.GetMouseButtonDown (0)) {
            index += 1;

            if (index == materials.Length + 1) {
                index = 1; 
            }
            print (index);

            rend.sharedMaterial = materials [index - 1];                        
        }
    }
}

我知道使用halo,但以编程方式我不知道。

4

1 回答 1

0

这个 Halo 组件可以通过一些工作来访问,让我用代码来演示它。

Private void Start() {   
    SerializedObject haloComponent = new SerializedObject(this.gameObject.GetComponent("Halo"));
    haloComponent?.FindProperty("m_Color").colorValue = Color.Red;
}

您还可以做更多的事情,但这是获取 Halo 参考的方法。请记住,GetComponent<>正在搜索的东西是 Halo,并且GetComponent("Halo")正在搜索名称为 Halo 的东西。由于该组件被命名为 Halo,它的工作原理就像一个魅力。试试看

于 2020-11-14T19:27:11.947 回答