如何在检查器Unity中区分不同的BoxCollider

时间:2018-11-04 18:50:10

标签: c# unity3d components inspector

假设我有一个带有4个不同BoxColliders2D的游戏对象“玩家”

我有一个墙脚本,它是“墙”游戏对象的一部分。

wall脚本有4个不同的public boxcolliders2D变量,但是我似乎找不到一种在检查器中的玩家游戏对象中将它们分别设置为各自的boxcollider2D的方法。

1 个答案:

答案 0 :(得分:2)

  

wall脚本有4个不同的public boxcolliders2D变量,但是我   似乎找不到一种将它们分别设置为各自的方法   在检查器中的游戏对象中的boxcollider2D。

不能从编辑器中执行此操作,但是您应该可以通过代码执行此操作。

使用GetComponents函数从代码中初始化4个变量,该函数返回附加到GameObject的组件数组。注意最后的“ s”。这不同于GetComponent函数,后者仅返回一个GameObject。

public BoxCollider2D col1;
public BoxCollider2D col2;
public BoxCollider2D col3;
public BoxCollider2D col4;

void Awake()
{
    BoxCollider2D[] colliders = GetComponents<BoxCollider2D>();
    col1 = colliders[0];
    col2 = colliders[1];
    col3 = colliders[2];
    col4 = colliders[3];
}

虽然代码版本应该可以工作,但是不要将多个BoxCollider2D附加到一个GameObject。要做的是为每个想要的额外对撞机创建子GameObject,然后将BoxCollider2D组件附加到它。这是在一个GameObject上使用多个对撞机的推荐方法,应该可以解决您的问题。

下面是应为以下内容的屏幕截图:

enter image description here

现在,您可以将每个子对撞机( BoxCollider2D 1 BoxCollider2D 2 BoxCollider2D 3 )拖动到适当的public变量名。