产卵预制棒的预制棒克隆

时间:2020-10-25 15:40:10

标签: c# unity3d

我正在创建一个关卡编辑器,我需要帮助生成预制件。

下面是我正在使用的预制件。现在,我正在使用的代码使之生效,因此,当我单击这些球之一时,会在该方向上生成一个新的Prefab,然后禁用该球。确实可行:

生成代码:

void OnMouseDown()
 {
     Instantiate(prefab, transform.position + transform.forward, transform.rotation);
     gameObject.SetActive(false);
 }

注意:我确实尝试使用PrefabUtility.InstantiatePrefab,但这并没有产生任何东西:

void OnMouseDown()
 {
     GameObject currentTile = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
     currentTile.transform.position = gameObject.transform.position + gameObject.transform.forward;
     gameObject.SetActive(false);
 }

我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为,当您将Orb设置为非活动状态时,您是在预制中而不是在实例中进行。 (实例是场景中出现的(克隆))。因此,这可能会导致在创建新克隆时,该克隆的球体已经处于非活动状态。

为此,您应使用以下示例通过实例而不是通过预制来禁用球体:

Gameobject GO = Instantiate(prefab, transform.position + transform.forward, transform.rotation);
GO.orb.SetActive(false);

使对orb的相应引用公开,并添加到编辑器中,以便您可以随后对其进行访问并可以将其停用。 希望有道理。

相关问题