Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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# 如何在统一检查器中区分不同的BoxCollider_C#_Unity3d_Components_Inspector - Fatal编程技术网

C# 如何在统一检查器中区分不同的BoxCollider

C# 如何在统一检查器中区分不同的BoxCollider,c#,unity3d,components,inspector,C#,Unity3d,Components,Inspector,假设我有一个具有4个不同BoxColliders2D的游戏对象“玩家” 我有一个墙脚本,它是“墙”游戏对象的一个组件 wall脚本有4个不同的公共boxcolliders2D变量,但我似乎找不到一种方法将它们分别设置为玩家游戏对象中各自的boxcollider2D wall脚本有4个不同的public boxcolliders2D变量,但是 似乎找不到一种方法将它们分别设置为各自的 玩家游戏对象中的BoxCollizer2D,在inspector中 您不能从编辑器中执行此操作,但应该可以通过代码

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

我有一个墙脚本,它是“墙”游戏对象的一个组件

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

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

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

使用
GetComponents
函数从代码中初始化4个变量,该函数返回附加到游戏对象的组件数组。注意结尾的“s”。这与只返回一个游戏对象的
GetComponent
函数不同

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];
}
public-boxr2d-col1;
公共包装盒R2D col2;
公共包装盒R2D col3;
公共包装盒R2D col4;
无效唤醒()
{
BoxCollider2D[]colliders=GetComponents();
col1=对撞机[0];
col2=对撞机[1];
col3=对撞机[2];
col4=对撞机[3];
}

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

下面是一个屏幕截图,它应该是什么样子的:


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

我已经知道您的碰撞器已附加到子对象。通过子对象的名称进行区分。我知道了,谢谢,但我知道,如果它们都设置在父对象上会怎么样?有没有办法通过inspector进行区分?正如程序员在回答中所说的那样,不要这样做。