Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过父游戏对象一次影响多个精灵的透明度?_C#_Unity3d - Fatal编程技术网

C# 如何通过父游戏对象一次影响多个精灵的透明度?

C# 如何通过父游戏对象一次影响多个精灵的透明度?,c#,unity3d,C#,Unity3d,我有一个播放器,可以在随机生成的房间地图上移动。我一直在想办法让所有房间保持完全透明/不可见,然后玩家一进入房间,房间就变得不透明 我已经有了一种检测球员所在房间的方法,我面临的主要问题是改变房间的透明度。每个房间都由30块左右的“墙”瓷砖组成,这些瓷砖目前只是默认的方形2D精灵。这些是我现在唯一需要更改的可见性 我看到我可以更改“材质渲染值”或类似于每个精灵的值,但我不确定是否有一种简单的方法可以一次为所有只具有默认精灵渲染器组件而没有自定义材质的精灵执行此操作 我是否需要彻底检修我房间的墙壁

我有一个播放器,可以在随机生成的房间地图上移动。我一直在想办法让所有房间保持完全透明/不可见,然后玩家一进入房间,房间就变得不透明

我已经有了一种检测球员所在房间的方法,我面临的主要问题是改变房间的透明度。每个房间都由30块左右的“墙”瓷砖组成,这些瓷砖目前只是默认的方形2D精灵。这些是我现在唯一需要更改的可见性

我看到我可以更改“材质渲染值”或类似于每个精灵的值,但我不确定是否有一种简单的方法可以一次为所有只具有默认精灵渲染器组件而没有自定义材质的精灵执行此操作

我是否需要彻底检修我房间的墙壁,使之成为整面墙的预制件?或者有什么方法可以轻松地在目标房间的每面墙中循环并更改透明度/可见性?

您应该使用GetChild()和for{}。Get child获取所选索引的子级,并访问它。以下是脚本:

void Update()
{
    for (int i = 0, i <= transform.childCount, i += 1)
    {
        GameObject child = GetChild(i);
        // change the values here using child.GetComponent<>()
    }
}
void Update()
{

对于(inti=0,i您可以使用
GameObject.SetActive(bool)
它具有禁用和启用游戏对象可见性的实用程序

(我相信您已经这样做了,但如果没有)在您的层次结构中,您将首先创建一个空的,并将您的房间添加到其中,使用您房间的名称重命名它,并且您可以在检测播放器所在的房间时使用以下脚本

公共游戏对象室;//将您的房间链接到此处
void Start()
{
room.SetActive(假);
}
无效更新()
{
//检测房间时
room.SetActive(true);
}
SetActive()void的bool参数设置对象是否可见,如果为false,则不可见,如果为true,则可见。我没有您的脚本作为参考,因此我使用了一个示例

在发现房间时,我将使用a并更改材质。