Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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,嗨,我想知道是否有其他方法可以通过c#中的代码来激活游戏对象 我唯一知道的就是这样做: public GameObject box; box.SetActive(true); 这真的很好,你可以把物体扔到检查员身上,但我想知道是否还有其他方法 比如使用对象的特定名称,或者使用特定标记将游戏对象变为活动对象。每当我用谷歌搜索一个例子,或者可能我搜索错了,我都很难找到一个例子 有什么建议吗?您有没有看一下或 有, 或者还有一些方法,比如, (您可以使用这些组件查找特定类型的组件,从而根据g

嗨,我想知道是否有其他方法可以通过c#中的代码来激活游戏对象

我唯一知道的就是这样做:

public GameObject box;    
box.SetActive(true);
这真的很好,你可以把物体扔到检查员身上,但我想知道是否还有其他方法

比如使用对象的特定名称,或者使用特定标记将游戏对象变为活动对象。每当我用谷歌搜索一个例子,或者可能我搜索错了,我都很难找到一个例子


有什么建议吗?

您有没有看一下或

有,

或者还有一些方法,比如,
(您可以使用这些组件查找特定类型的组件,从而根据
gameObject
将其设置为活动)

但由于您请求通过标记激活多个对象:

var targetObjects = GameObject.FindGameObjectsWithTag("YourTag");
foreach(var obj in targetObjects)
{
    obj.SetActive(true);
}

但是请注意,这比从检查员那里获得参考要昂贵得多。因此,如果可能,通常尽量避免使用这些
FindXY
方法

是的,remy_rm在评论中正确指出,你绝对不应该在任何更新循环或其他定期调用的方法中使用它们。您应该始终调用它们,例如在
唤醒
启动
等中,并存储引用以备以后使用


更新

如果我正确理解了您的评论,您还希望将这些标记对象中的一些子对象设置为活动:

var targetObjects = GameObject.FindGameObjectsWithTag("YourTag");
foreach(var obj in targetObjects)
{
    obj.SetActive(true);
    // also activate all children
    foreach(Transform child in obj.transform)
    {
        child.gameObject.SetActive(true);
    }
}

然而,我想强调一件关于“查找”方法的特殊事情。(这也在文档中,但经常被忽略)。也就是说,它们在性能上非常糟糕,使用时应该稍微谨慎。因此,在更新循环或其他定期被调用的方法中是不存在的。FindGameObjectsSwithTag异常。因此,要么缓存结果,要么从inspector编辑中选择引用:我看到你比我先添加这个^^@remy_rm是的,这就是我所说的
注意,但是这比从inspector获得引用要昂贵得多。因此,一般来说,如果可能,尽量避免使用这些FindXY方法。
但我也尝试在回答中添加您的评论谢谢您,但我还有一个问题,必须始终保持活动状态,那么其未活动的子对象呢?我也这么做吗?@Furvus你到底是什么意思?你想激活一个对象的子对象吗?@Furvus大多数方法都有一个重载来包含非活动的游戏对象。