删除所有缺少其类型的托管引用。
此方法删除与具有丢失类型的托管引用字段关联的所有序列化数据。
此 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()); } }