Skip to content

Commit

Permalink
fix: 複数オブジェクト編集時に配列サイズに差があると発生していたエラーを抑制、複数選択中のエディタを追加及び見栄えを改善
Browse files Browse the repository at this point in the history
  • Loading branch information
pspkurara committed Nov 9, 2020
1 parent 1d93d3b commit e2ca64e
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
13 changes: 11 additions & 2 deletions Packages/uGUI-Skinner/Editor/EditorConst.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public static class EditorConst
{

public static readonly GUIStyle NormalFoldoutStyle = CreateNormalFoldoutStyle();
public static readonly GUIStyle HighLightFoldoutStyle = EditorStyles.foldoutPreDrop;
public static readonly GUIStyle HighLightFoldoutStyle = CreateHightLightFoldoutStyle();
public static readonly Color AddButtonColor = Color.cyan;
public static readonly Color RemoveButtonColor = new Color(1, 0.7f, 0.78f);
public static readonly Color CleanupButtonColor = Color.yellow;
Expand All @@ -18,10 +18,11 @@ public static class EditorConst

public static readonly GUIContent CurrentSelectStyleTitle = new GUIContent("Current Select Style");

public const string CurrentSkinHasMultipleDifferentValue = "-";
public const string CurrentSkinHasMultipleDifferentValue = "";

public const string SkinFoldTitle = "Skin {0}";
public const string SkinFoldTitleHasStyleKey = "Skin {0} [{1}]";
public const string StyleKeyHasMultipleDifferentValue = "<color=grey>―</color>";

public static readonly GUIContent AddSkinButtonTitle = new GUIContent("Add New Skin Style");
public static readonly GUIContent AddPartsButtonTitle = new GUIContent("Add New Skin Parts");
Expand Down Expand Up @@ -61,6 +62,14 @@ private static GUIStyle CreateNormalFoldoutStyle()
{
var guiStyle = new GUIStyle(EditorStyles.foldout);
guiStyle.margin = EditorStyles.foldoutPreDrop.margin;
guiStyle.richText = true;
return guiStyle;
}

private static GUIStyle CreateHightLightFoldoutStyle()
{
var guiStyle = new GUIStyle(EditorStyles.foldoutPreDrop);
guiStyle.richText = true;
return guiStyle;
}

Expand Down
26 changes: 23 additions & 3 deletions Packages/uGUI-Skinner/Editor/UISkinnerInspector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,15 +118,34 @@ public override void OnInspectorGUI()
{

var skinStyleElementProperty = m_SkinStyles.GetArrayElementAtIndex(skinStylesIndex);

if (!skinStyleElementProperty.propertyPath.Contains(FieldName.Styles)) continue;

var skinPartsProperty = skinStyleElementProperty.FindPropertyRelative(FieldName.Parts);
var styleKey = skinStyleElementProperty.FindPropertyRelative(FieldName.StyleKey);

GUIStyle style = (edittedCurrentStyle == skinStylesIndex) ? EditorConst.HighLightFoldoutStyle : EditorConst.NormalFoldoutStyle;
GUIStyle style = (edittedCurrentStyle == skinStylesIndex && !m_StyleIndex.hasMultipleDifferentValues) ? EditorConst.HighLightFoldoutStyle : EditorConst.NormalFoldoutStyle;

bool hasStyleKey = !string.IsNullOrEmpty(styleKey.stringValue);

EditorGUILayout.BeginHorizontal();
m_SkinFoldoutTitle.text = hasStyleKey ? string.Format(EditorConst.SkinFoldTitleHasStyleKey, skinStylesIndex, styleKey.stringValue) : string.Format(EditorConst.SkinFoldTitle, skinStylesIndex);
if (hasStyleKey || styleKey.hasMultipleDifferentValues)
{
string styleKeyText;
if (styleKey.hasMultipleDifferentValues)
{
styleKeyText = EditorConst.StyleKeyHasMultipleDifferentValue;
}
else
{
styleKeyText = styleKey.stringValue;
}
m_SkinFoldoutTitle.text = string.Format(EditorConst.SkinFoldTitleHasStyleKey, skinStylesIndex, styleKeyText);
}
else
{
m_SkinFoldoutTitle.text = string.Format(EditorConst.SkinFoldTitle, skinStylesIndex);
}
EditorGUI.BeginChangeCheck();
m_GuiUniqueIdCounter.Next();
skinStyleElementProperty.isExpanded = EditorGUILayout.Foldout(skinStyleElementProperty.isExpanded, m_SkinFoldoutTitle, true, style);
Expand All @@ -153,9 +172,10 @@ public override void OnInspectorGUI()

SerializedProperty skinPartsElementProperty = skinPartsProperty.GetArrayElementAtIndex(skinPartsIndex);

if (!skinPartsElementProperty.propertyPath.Contains(FieldName.Parts)) continue;

try
{

SerializedProperty skinPartsTypeProperty = skinPartsElementProperty.FindPropertyRelative(FieldName.Type);
int skinPartsType = skinPartsTypeProperty.intValue;

Expand Down

0 comments on commit e2ca64e

Please sign in to comment.