版本: Unity 6 (6000.0)
语言英语
  • C#

SerializationUtility.ClearAllManagedReferencesWithMissingTypes

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议的更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static bool ClearAllManagedReferencesWithMissingTypes(Object obj);

描述

删除所有缺少其类型的托管引用。

此方法删除与具有丢失类型的托管引用字段关联的所有序列化数据。

此 API 用于在加载资源时删除丢失类型警告消息,例如,如果对不再使用的包中的类存在引用。

如果对象没有缺少类型的引用,则此方法返回 false。

其他资源:ClearManagedReferenceWithMissingTypeSerializeReference

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()); } }