Version: 2021.3

Transform.SetSiblingIndex

切换到手册
public void SetSiblingIndex (int index);

参数

index 要设置的索引。

描述

设置同级索引。

用于更改 GameObject 的同级索引。如果 GameObject 与其他 GameObject 共享一个父级并且处于同一级别(即它们共享相同的直接父级),则这些 GameObject 被称为同级对象。同级索引显示每个 GameObject 在该同级层级视图中的位置。

使用 SetSiblingIndex 更改 GameObject 在该层级视图中的位置。当 GameObject 的同级索引发生更改时,其在“Hierarchy”窗口中的顺序也会改变。如果您需要更改 GameObject 子项的排序(例如使用布局组组件时),这很有用。

布局组还将按索引以可视化方式对组进行重新排序。要了解有关布局组的更多信息,请参阅 AutoLayout。 要返回 GameObject 的同级索引,请参阅 Transform.GetSiblingIndex

//This script demonstrates how to return (GetSiblingIndex) and change (SetSiblingIndex) the sibling index of a GameObject.
//Attach this script to the GameObject you would like to change the sibling index of.
//To see this in action, make this GameObject the child of another GameObject, and create siblings for it.

using UnityEngine;

public class TransformGetSiblingIndex : MonoBehaviour { //Use this to change the hierarchy of the GameObject siblings int m_IndexNumber;

void Start() { //Initialise the Sibling Index to 0 m_IndexNumber = 0; //Set the Sibling Index transform.SetSiblingIndex(m_IndexNumber); //Output the Sibling Index to the console Debug.Log("Sibling Index : " + transform.GetSiblingIndex()); }

void OnGUI() { //Press this Button to increase the sibling index number of the GameObject if (GUI.Button(new Rect(0, 0, 200, 40), "Add Index Number")) { //Make sure the index number doesn't exceed the Sibling Index by more than 1 if (m_IndexNumber <= transform.GetSiblingIndex()) { //Increase the Index Number m_IndexNumber++; } }

//Press this Button to decrease the sibling index number of the GameObject if (GUI.Button(new Rect(0, 40, 200, 40), "Minus Index Number")) { //Make sure the index number doesn't go below 0 if (m_IndexNumber >= 1) { //Decrease the index number m_IndexNumber--; } } //Detect if any of the Buttons are being pressed if (GUI.changed) { //Update the Sibling Index of the GameObject transform.SetSiblingIndex(m_IndexNumber); Debug.Log("Sibling Index : " + transform.GetSiblingIndex()); } } }