【问题标题】:change index of object in array according to Hierarchy at runtime in Unity在 Unity 运行时根据层次结构更改数组中对象的索引
【发布时间】:2018-07-30 16:10:55
【问题描述】:

如何在运行时更改objectindex?对象的索引在层次结构中发生变化。因为我在游戏中使用reorderableList。您可以在 Unity UI Extension 资产中看到。当对象的索引在层次结构中发生变化时,它也会改变数组的索引。

【问题讨论】:

  • 不能只根据仓位不索引来跟踪订单吗?
  • 欢迎来到 SO。你拿the tour了吗?我对缺少代码和图像感到困惑——这张图像应该告诉我什么?我们关心代码,而不是图片。如果您有特定问题,请考虑研究 how-to-askon topic ,提供尊重 How to create a Minimal, Complete, and Verifiable example 的代码以及您的代码无法满足的异常/期望,我相信 SO 会帮助您。
  • 塞巴斯蒂安 L 我什么也做不了。我试过兄弟,但它不起作用

标签: c# arrays unity3d indexing siblings


【解决方案1】:

您可以从 transform.GetSiblingIndex() 获取 GameObject 的索引 ...您也可以使用 transform.SetSiblingIndex(int index) 设置它

所以我认为您要问的是如何将列表中项目的索引更新为高等级项目的索引。

首先让我假设您正在使用 UnityEngine.UI.Extensions.ReorderableList

第二,我假设您的列表已经填充了相关游戏对象下的所有元素,或者至少是您关心的位置。

现在创建一个新的 MonoBehaviour 或向新的 MonoBehaviour 添加一个功能。

public void UpdateSiblingIndex(ReorderableList.ReorderableListEventStruct eventData)
{
       eventData.DroppedObject.transform.SetSiblingIndex(eventData.ToIndex);
}

接下来在 ReorderableList 中将此函数分配给 OnElementAdd、OnElementDrop 和列表中您希望确保该元素更新其兄弟索引的任何其他事件。

【讨论】:

  • 我解决了问题,但仍然感谢您的帮助。
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多