SerializationUtility.ClearAllManagedReferencesWithMissingTypes
Declaration
public static bool ClearAllManagedReferencesWithMissingTypes(Object obj);Описание
Удаляет все управляемые ссылки, у которых отсутствует тип.
Этот метод удаляет все серийные данные, связанные с управляемыми полями ссылок с отсутствующими типами.
Этот API удобен для того, чтобы убрать предупреждения об отсутствующем типе при загрузке ассета — например, если есть ссылка на класс из пакета, который больше не используется.
Этот метод возвращает false, если объект не имел ссылок с отсутствующими типами.
Дополнительные ресурсы: ClearManagedReferenceWithMissingType, SerializeReference.
using System.Collections.Generic; using System.Text; using UnityEngine; using UnityEditor;
public class ClearMissingTypeExample { [MenuItem("Example/Clear ScriptableObject References with Missing Types")] static public void ClearMissingTypesOnScriptableObjects() { var report = new StringBuilder();
var guids = AssetDatabase.FindAssets("t:ScriptableObject", new[] {"Assets"}); foreach (string guid in guids) { var path = AssetDatabase.GUIDToAssetPath(guid); Object obj = AssetDatabase.LoadMainAssetAtPath(path); if (obj != null) { if (SerializationUtility.ClearAllManagedReferencesWithMissingTypes(obj)) { report.Append("Cleared missing types from ").Append(path).AppendLine(); } else { report.Append("No missing types to clear on ").Append(path).AppendLine(); } } }
Debug.Log(report.ToString()); } }