Skip to content

Commit

Permalink
feat: クリーンアップ機能を強化(参照漏れ、使えないデータも削除するようにした)
Browse files Browse the repository at this point in the history
  • Loading branch information
pspkurara committed Nov 6, 2020
1 parent 78eb45f commit 84b7c66
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion Packages/uGUI-Skinner/Editor/UISkinnerInspector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ private void Cleanup()
for (int skinStylesIndex = 0; skinStylesIndex < m_SkinStyles.arraySize; skinStylesIndex++)
{
SerializedProperty skinPartsProperty = m_SkinStyles.GetArrayElementAtIndex(skinStylesIndex).FindPropertyRelative(FieldName.Parts);
for (int skinPartsIndex = 0; skinPartsIndex < skinPartsProperty.arraySize; skinPartsIndex++)
for (int skinPartsIndex = skinPartsProperty.arraySize-1; skinPartsIndex >= 0; skinPartsIndex--)
{
SerializedProperty partsProp = skinPartsProperty.GetArrayElementAtIndex(skinPartsIndex);
SerializedProperty skinPartsTypeProperty = partsProp.FindPropertyRelative(FieldName.Type);
Expand All @@ -319,6 +319,8 @@ private void Cleanup()
// 該当IDが存在しない場合は何もしない
if (!SkinPartsAccess.IsCorrectSkinPartsId(skinPartsType))
{
// ID存在しないなら不正なデータなのでいらないと思う
skinPartsProperty.DeleteArrayElementAtIndex(skinPartsIndex);
continue;
}

Expand All @@ -327,6 +329,8 @@ private void Cleanup()
// 該当インスペクターが存在しない場合は何もしない
if (!SkinPartsInspectorAccess.IsRegistedInspector(rootType))
{
// インスペクター存在しないなら使えないデータなのでいらないと思う
skinPartsProperty.DeleteArrayElementAtIndex(skinPartsIndex);
continue;
}

Expand All @@ -336,6 +340,25 @@ private void Cleanup()

inspector.CleanupFields(m_SkinPartsProperty);

// オブジェクト参照の数を確認 (全てnullかどうか)
bool isExistObject = false;
for (int i = 0; i < m_SkinPartsProperty.objectReferenceValues.arraySize; i++)
{
var objectReferenceProperty = m_SkinPartsProperty.objectReferenceValues.GetArrayElementAtIndex(i);
if (objectReferenceProperty.objectReferenceValue != null)
{
isExistObject = true;
break;
}
}

// ひとつも参照が設定されていない
if (!isExistObject)
{
// オブジェクト参照がない場合何にも影響しないのでいらないと思う
skinPartsProperty.DeleteArrayElementAtIndex(skinPartsIndex);
}

}
}
}
Expand Down

0 comments on commit 84b7c66

Please sign in to comment.