您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
95 行
2.3 KiB
95 行
2.3 KiB
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Unity.DemoTeam.DigitalHuman
|
|
{
|
|
[CustomEditor(typeof(SkinAttachment)), CanEditMultipleObjects]
|
|
public class SkinAttachmentEditor : Editor
|
|
{
|
|
private Editor attachmentTargetEditor;
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
if (target == null)
|
|
return;
|
|
|
|
if (targets.Length == 1)
|
|
{
|
|
var attachment = target as SkinAttachment;
|
|
if (attachment == null)
|
|
return;
|
|
|
|
EditorGUILayout.HelpBox(attachment.attached ? "Attached to " + attachment.target : "Detached", MessageType.Info);
|
|
DrawGUIAttachDetach(attachment);
|
|
EditorGUILayout.Separator();
|
|
|
|
base.OnInspectorGUI();
|
|
|
|
var attachmentTarget = (target as SkinAttachment).target;
|
|
if (attachmentTarget != null)
|
|
{
|
|
Editor.CreateCachedEditor(attachmentTarget, null, ref attachmentTargetEditor);
|
|
attachmentTargetEditor.DrawHeader();
|
|
attachmentTargetEditor.OnInspectorGUI();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
EditorGUILayout.HelpBox("Multiple attachments selected", MessageType.Warning);
|
|
|
|
foreach (var target in targets)
|
|
{
|
|
var attachment = target as SkinAttachment;
|
|
if (attachment == null)
|
|
continue;
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
EditorGUILayout.ObjectField(attachment, typeof(SkinAttachment), false);
|
|
DrawGUIAttachDetach(attachment);
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void DrawGUIAttachDetach(SkinAttachment attachment)
|
|
{
|
|
EditorGUILayout.BeginVertical();
|
|
DrawGUIAttach(attachment);
|
|
DrawGUIDetach(attachment);
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
|
|
public static void DrawGUIAttach(SkinAttachment attachment)
|
|
{
|
|
EditorGUI.BeginDisabledGroup(attachment.attached);
|
|
{
|
|
if (GUILayout.Button("Attach"))
|
|
{
|
|
attachment.attached = true;
|
|
}
|
|
}
|
|
EditorGUI.EndDisabledGroup();
|
|
}
|
|
|
|
public static void DrawGUIDetach(SkinAttachment attachment)
|
|
{
|
|
EditorGUI.BeginDisabledGroup(!attachment.attached);
|
|
{
|
|
EditorGUILayout.BeginHorizontal();
|
|
if (GUILayout.Button("Detach"))
|
|
{
|
|
attachment.attached = false;
|
|
attachment.preserveResolved = false;
|
|
}
|
|
if (GUILayout.Button("+ Hold", GUILayout.ExpandWidth(false)))
|
|
{
|
|
attachment.attached = false;
|
|
attachment.preserveResolved = true;
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
EditorGUI.EndDisabledGroup();
|
|
}
|
|
}
|
|
}
|