csharp 将“Move to Top”和“Move to Bottom”项添加到组件的检查器上下文菜单中。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 将“Move to Top”和“Move to Bottom”项添加到组件的检查器上下文菜单中。相关的知识,希望对你有一定的参考价值。
using UnityEngine;
using UnityEditor;
public class MoveComponentContext
{
enum Destination
{
Top,
Bottom
};
const string kComponentArrayName = "m_Component";
const int kFirstComponentIndex = 1;
[MenuItem ("CONTEXT/Component/Move to Top")]
static void Top (MenuCommand command)
{
Move ((Component)command.context, Destination.Top);
}
[MenuItem ("CONTEXT/Component/Move to Bottom")]
static void Bottom (MenuCommand command)
{
Move ((Component)command.context, Destination.Bottom);
}
static void Move (Component target, Destination destination)
{
SerializedObject gameObject = new SerializedObject (target.gameObject);
SerializedProperty componentArray = gameObject.FindProperty (kComponentArrayName);
int lastComponentIndex = componentArray.arraySize - 1;
int targetIndex = destination == Destination.Top ? kFirstComponentIndex : lastComponentIndex;
for (int index = kFirstComponentIndex; index <= lastComponentIndex; ++index)
{
SerializedProperty iterator = componentArray.GetArrayElementAtIndex (index);
iterator.Next (true);
iterator.Next (true);
if (iterator.objectReferenceValue == target)
{
componentArray.MoveArrayElement (index, targetIndex);
gameObject.ApplyModifiedProperties ();
break;
}
}
}
}
以上是关于csharp 将“Move to Top”和“Move to Bottom”项添加到组件的检查器上下文菜单中。的主要内容,如果未能解决你的问题,请参考以下文章