【问题标题】:how do instantiate GameObject as child of a selected object如何将 GameObject 实例化为选定对象的子对象
【发布时间】:2022-01-05 10:13:15
【问题描述】:

我想将一个游戏对象实例化为所选对象的子对象。需要帮忙 现在我正在使用这个Instantiate(EnemyPrefab[Random.Range(0, EnemyPrefab.Length)], SpwanPos, Quaternion.identity);

【问题讨论】:

  • Instantiate(EnemyPrefab[Random.Range(0, EnemyPrefab.Length)], SpwanPos, Quaternion.identity, selectedObject.transform); ...?

标签: c# unity3d spawn


【解决方案1】:

实例化对象有多种方式(来源:InstantiateChildObject

public static Object Instantiate(Object original);

public static Object Instantiate(Object original, Transform parent);

public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

如果您想在世界空间中将预制件实例化为 GameObject 的子对象,那么:

GameObject childGameObject = Instantiate(yourPrefab, parentOfObject, true);
childGameObject.name = "Enemy01";

不要忘记在作为父对象后重置转换(或设置您自己的转换)

所有类型的子实例化函数列表:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InstantiateAsChild : MonoBehaviour
{
    public GameObject prefab;
    public Transform parent;
    public Vector2 position;
    public Quaternion rotation;

    public void childInstantiate()
    {
        GameObject childGameObject = Instantiate(prefab);
        childGameObject.name = "Instantiate";
    }

    public void childInstantiateAsChild()
    {
        GameObject childGameObject = Instantiate(prefab, parent);
        childGameObject.name = "InstantiateChild";

    }

    public void childInstantiateAsChildWorldSpace()
    {
        GameObject childGameObject = Instantiate(prefab, parent, true);
        childGameObject.name = "InstantiateWorldSpace";
    }

    public void childInstantiateWithPositionRotation()
    {
        GameObject childGameObject = Instantiate(prefab, position, rotation);
        childGameObject.name = "InstantiatePosAndRot";
    }
    public void childInstantiateAsChildWithPositionRotation()
    {
        GameObject childGameObject = Instantiate(prefab, position, rotation ,parent);
        childGameObject.name = "InstantiateChildPosAndRot";
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2016-04-22
    • 2018-02-18
    相关资源
    最近更新 更多