首页 > 解决方案 > 禁用多个游戏对象的网格渲染器

问题描述

我目前正在研究某种类型的 LOD 系统,其中我有一些必须启用和禁用的蕨类植物。我在这个过程中使用了一个立方体,所以当我的角色触摸立方体时,蕨类网格渲染器将被禁用,当不触摸它时,它将启用它们。现在我挣扎的部分是当我必须启用/禁用这些带有 fern 标记的游戏对象的网格渲染时。到目前为止,这是我的代码:

public GameObject[] FernPlants;
public MeshRenderer MR;

// Start is called before the first frame update
void Start()
{
    FernPlants = GameObject.FindGameObjectsWithTag("Fern");  
}

private void OnTriggerEnter(Collider other)
{
    if(other.tag == "Player")
    {
        //Disable meshrenderers on FernPlants
    }
}

private void OnTriggerExit(Collider other)
{
    //Enable meshrenderers on FernPlants
}

标签: c#unity3d

解决方案


尝试类似:

public GameObject[] FernPlants;
public MeshRenderer MR;

// Start is called before the first frame update
void Start()
{
    FernPlants = GameObject.FindGameObjectsWithTag("Fern");  
}

private void OnTriggerEnter(Collider other)
{
    if(other.tag == "Player")
    {
        //Disable meshrenderers on FernPlants
        foreach(GameObject go in FernPlants)
        {
            go.GetComponent<MeshRenderer>().enabled = false;
        }
    }
}

private void OnTriggerExit(Collider other)
{
    //Enable meshrenderers on FernPlants
    foreach(GameObject go in FernPlants)
    {
        go.GetComponent<MeshRenderer>().enabled = true;
    }
}

推荐阅读