版本: Unity 6 (6000.0)
语言英语
  • C#

Transform.SetParent

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们不能接受所有提交,但我们会阅读用户提出的每一项更改建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void SetParent(Transform p);

声明

public void SetParent(Transform parent, bool worldPositionStays);

参数

parent 要使用的父 Transform。
worldPositionStays 如果为 true,则修改父级相对位置、缩放和旋转,以便对象保持与之前相同的 world 空间位置、旋转和缩放。

描述

设置变换的父级。

此方法与 parent 属性相同,不同之处在于它还允许 Transform 保持其局部方向而不是其全局方向。这意味着例如,如果 GameObject 之前在其父级旁边,将 worldPositionStays 设置为 false 将移动 GameObject 以与之前相同的方式定位在其新父级旁边。

worldPositionStays 参数的默认值为 true。

下图显示了子 GameObject 在其原始位置



以下是在调用 SetParent 时将 worldPositionStays 设置为 true 的效果



以下是在调用 SetParent 时将 worldPositionStays 设置为 false 的效果



请注意,子球体位于相同的位置,但现在相对于新父立方体。

using UnityEngine;

public class ExampleClass : MonoBehaviour { public GameObject child;

public Transform parent;

//Invoked when a button is clicked. public void Example(Transform newParent) { // Sets "newParent" as the new parent of the child GameObject. child.transform.SetParent(newParent);

// Same as above, except worldPositionStays set to false // makes the child keep its local orientation rather than // its global orientation. child.transform.SetParent(newParent, false);

// Setting the parent to ‘null’ unparents the GameObject // and turns child into a top-level object in the hierarchy child.transform.SetParent(null); } }