Unity:如何通过字符串名称将预制件实例化到某个位置?

Wok*_*ead 3 unity-game-engine

我将所有字符串名称保存在一个列表中,以保存玩家拥有的所有预制车辆。

字符串名称是预制名称。

我将如何按名称生成/实例化预制件?

并在特定位置或游戏对象上生成预制件?

谢谢!

zwc*_*oud 5

List<string> playerOwnPrefabNames;
GameObject someGameObject;

foreach(prefabName in playerOwnPrefabNames)
{
    var prefabName = playerOwnPrefabNames;
    var prefabInstance = Instantiate(Resources.Load(pathOfPrefabDirectory+prefabName)) as GameObject;
}
Run Code Online (Sandbox Code Playgroud)

然后,生成预制件someGameObject(这将使实例化的预制件成为 的子代someGameObject):

prefabInstance.SetParent(someGameObject.transform);
Run Code Online (Sandbox Code Playgroud)

将预制件移动到特定位置:

prefabInstance.transform.position = new Vector3(100, 200, 100);
Run Code Online (Sandbox Code Playgroud)

参考:

  • 您可以在“实例化”命令中声明一个父对象,而不是使用“SetParent”。这避免了 2 次变换层次重新计算(这可能代价高昂)。 (3认同)