我正在创建一个关卡编辑器,我需要帮助生成预制件。
下面是我正在使用的预制件。现在,我正在使用的代码使之生效,因此,当我单击这些球之一时,会在该方向上生成一个新的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);
}
我如何做到这一点?
答案 0 :(得分:0)
我认为,当您将Orb设置为非活动状态时,您是在预制中而不是在实例中进行。 (实例是场景中出现的(克隆))。因此,这可能会导致在创建新克隆时,该克隆的球体已经处于非活动状态。
为此,您应使用以下示例通过实例而不是通过预制来禁用球体:
Gameobject GO = Instantiate(prefab, transform.position + transform.forward, transform.rotation);
GO.orb.SetActive(false);
使对orb的相应引用公开,并添加到编辑器中,以便您可以随后对其进行访问并可以将其停用。 希望有道理。