Unity 当使用 Instantiate() 创建实例时,在参数里定义父级与实例化后再设置父级的区别...

本文详细介绍了Unity3D中如何通过Instantiate函数实例化预制件,并探讨了设置父级对象时的不同选项。在保持世界坐标系变换的情况下,实例会被移动到父级的指定局部坐标;如果不保持世界坐标系变换,实例则会在父级内保持其原始世界坐标。这些知识点对于理解和控制游戏对象在场景中的位置至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设有:

  1. prefab:预制件, 默认的位置在(10,10,10)。
  2. parent:在场景中的游戏对象,位置在(20,20,20)。
  • 例1. 在参数里定义父级,会将实例直接旋转到父级,此时实例在父级内的局部坐标为(10,10,10),实例的世界坐标为(30,30,30)

    var inst = Instantiate(prefab, parent);
  • 例2.实例化后再设置父级(保持世界坐标系变换),会先将实例放置在当前激活的场景下,然后保持实例当世界坐标的位置转换父级,此时实例在父级内的局部坐标为(-10,-10,-10),实例的世界坐标为(10,10,10)

    var inst = Instantiate(prefab);
    
    inst.transform.parent = parent;
    // 或
    // inst.transform.SetParent(transform);
    // 或
    // inst.transform.SetParent(transform, true);
  • 例3. 实例化后再设置父级(不保持世界坐标系变换),此时与例1等效

    var inst = Instantiate(prefab);
    inst.transform.SetParent(transform,false);
Unity中,`Instantiate()` 方法用于从预制体(Prefab)动态地创建新的游戏对象。以下是使用 `Instantiate()` 的基本步骤: 1. 首先,你需要有一个Prefab。Prefab是一个保存了完整场景元素(如模型、动画、组件等)的数据结构,可以在Hierarchy窗口中右键单击并选择 "Create Empty" 或 "Create Prefab" 创建。 2. 确保已导入Prefab到项目中。通常Prefab会放在Assets/Prefabs文件夹下。 3. 在需要创建新对象的地方编写代码。例如,在脚本中: ```csharp // 获取你要实例化的Prefab对象引用 GameObject prefab = Resources.Load<GameObject>("YourPrefabPath"); // 替换 "YourPrefabPath" 为你Prefab的实际路径 // 指位置、旋转和平移向量 (optional),可以为空 Vector3 position = new Vector3(x, y, z); Quaternion rotation = Quaternion.identity; Vector3 scale = Vector3.one; // 使用 Instantiate 方法创建实例,并应用指的位置和旋转 GameObject instantiatedObject = Instantiate(prefab, position, rotation, null); // 如果你想应用自义的Transform组件属性(例如缩放),可以这样做: Transform newTransform = Instantiate(prefab.transform, position, rotation).transform; // 创建一个新的Transform并应用参数 instantiatedObject.transform = newTransform; // 将这个新的Transform赋值给游戏物体 ``` 4. 注意,如果你传递null作为最后一个参数,`Instantiate()` 将使用Prefab本身的变换;如果传递非空的`Transform`实例,则会基于该变换创建新的实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值