Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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# Unity-更改具有特定标记的所有对象_C#_Unity3d - Fatal编程技术网

C# Unity-更改具有特定标记的所有对象

C# Unity-更改具有特定标记的所有对象,c#,unity3d,C#,Unity3d,我在unity中制作了一个游戏,并添加了一个碰撞脚本,当我的玩家击中一个方块时运行该脚本。如果可能的话,我希望它选择每个游戏对象与特定的标签,并禁用一个特定的功能。例如,我的最终产品是在每个带有“障碍物”标签的游戏对象的attachedRigidbody中禁用useGravity功能,但我不确定如何在unity中对其进行编码。我已经使我的当前代码禁用命中实体重力,但希望同时对所有实体执行此操作 void OnCollisionEnter (Collision collisionInfo) {

我在unity中制作了一个游戏,并添加了一个碰撞脚本,当我的玩家击中一个方块时运行该脚本。如果可能的话,我希望它选择每个游戏对象与特定的标签,并禁用一个特定的功能。例如,我的最终产品是在每个带有“障碍物”标签的游戏对象的attachedRigidbody中禁用useGravity功能,但我不确定如何在unity中对其进行编码。我已经使我的当前代码禁用命中实体重力,但希望同时对所有实体执行此操作

void OnCollisionEnter (Collision collisionInfo)
{
    if (collisionInfo.collider.tag == "Obstacle")
    {
        collisionInfo.collider.attachedRigidbody.useGravity = false;
        GameManager.restartDelay = 4f;
        movement.enabled = false;
        FindObjectOfType<GameManager>().EndGame();
    }
}
void onCollisionCenter(碰撞信息)
{
if(collisionInfo.collider.tag==“障碍物”)
{
collisionInfo.collider.attachedRigidbody.useGravity=false;
GameManager.restartDelay=4f;
movement.enabled=false;
FindObjectOfType().EndGame();
}
}

很抱歉造成混淆。

如果您想查找带有特定标记的所有游戏对象,请使用。它返回带有上述标记的游戏对象数组。然后,只需在数组中循环并更改每个对象所需的内容即可。

如果要查找具有特定标记的所有游戏对象,请使用。它返回带有上述标记的游戏对象数组。然后,它就像在数组中循环并更改每个对象上所需的一样简单。

在碰撞时,找到每个带有标记的游戏对象并将其放入数组中,然后只需在数组中循环每个对象,并根据需要对其进行操作

void OnCollisionEnter (Collision collisionInfo)
{
    if (collisionInfo.collider.tag == "Obstacle")
    {
        GameObject[] obstacles = GameObject.FindGameObjectsWithTag("Obstacle");
        foreach(GameObject obst in obstacles)
            obst.GetComponent<RigidBody>().useGravity = false;

        GameManager.restartDelay = 4f;
        movement.enabled = false;
        FindObjectOfType<GameManager>().EndGame();
    }
}
void onCollisionCenter(碰撞信息)
{
if(collisionInfo.collider.tag==“障碍物”)
{
GameObject[]障碍物=GameObject.FindGameObjectsSwithTag(“障碍物”);
foreach(障碍物中的游戏对象obst)
obst.GetComponent().useGravity=false;
GameManager.restartDelay=4f;
movement.enabled=false;
FindObjectOfType().EndGame();
}
}

在发生碰撞时,找到每个带有标签的游戏对象并将其放入数组中,然后在数组中的每个对象之间循环,并根据需要对其进行操作

void OnCollisionEnter (Collision collisionInfo)
{
    if (collisionInfo.collider.tag == "Obstacle")
    {
        GameObject[] obstacles = GameObject.FindGameObjectsWithTag("Obstacle");
        foreach(GameObject obst in obstacles)
            obst.GetComponent<RigidBody>().useGravity = false;

        GameManager.restartDelay = 4f;
        movement.enabled = false;
        FindObjectOfType<GameManager>().EndGame();
    }
}
void onCollisionCenter(碰撞信息)
{
if(collisionInfo.collider.tag==“障碍物”)
{
GameObject[]障碍物=GameObject.FindGameObjectsSwithTag(“障碍物”);
foreach(障碍物中的游戏对象obst)
obst.GetComponent().useGravity=false;
GameManager.restartDelay=4f;
movement.enabled=false;
FindObjectOfType().EndGame();
}
}
这很简单

如果要使用,请记住
s
,因为有多个对象

然后,对每个项目使用
foreach
循环,然后禁用
useGravity

代码:

void onCollisionCenter(碰撞信息)
{
if(碰撞信息比较标记(障碍物))
{
GameObject[]Allobstacks=GameObject.FindGameObjectsSwithTag(“障碍”);
foreach(障碍物中的游戏对象障碍物)
.GetComponent().useGravity=false;
GameManager.restartDelay=4f;
movement.enabled=false;
FindObjectOfType().EndGame();
}
}
我希望你明白了 这很简单

如果要使用,请记住
s
,因为有多个对象

然后,对每个项目使用
foreach
循环,然后禁用
useGravity

代码:

void onCollisionCenter(碰撞信息)
{
if(碰撞信息比较标记(障碍物))
{
GameObject[]Allobstacks=GameObject.FindGameObjectsSwithTag(“障碍”);
foreach(障碍物中的游戏对象障碍物)
.GetComponent().useGravity=false;
GameManager.restartDelay=4f;
movement.enabled=false;
FindObjectOfType().EndGame();
}
}
我希望你明白了。