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