前提・実現したいこと
アセットのMissingをチェックする処理をいくつかのサイト様を参考に作成していましたが、Unity2018.3にアップデートした途端、検出しなくなってしまいました。
以下がチェック処理になります。
C#
1IEnumerable<UnityEngine.Object> assets = AssetDatabase.LoadAllAssetsAtPath(asset_path); 2foreach (UnityEngine.Object target_asset in assets) 3{ 4 SerializedObject serialized_object = new SerializedObject(target_asset); 5 SerializedProperty property = serialized_object.GetIterator(); 6 while (property.Next(true)) 7 { 8 if (SerializedPropertyType.ObjectReference != property.propertyType) { continue; } 9 if (null != property.objectReferenceValue) { continue; } 10 if (0 == property.objectReferenceInstanceIDValue) { continue; } 11 missing_list.Add(target_asset); 12 } 13}
missingの状態でもnullの状態でもSerializedProperty.objectReferenceInstanceIDValueが0を返すので、何かあるのかを確認の為にGitHub上の該当ソースを参照してみたところ、2018.3からは以下のように変わってしまったようです。
public int objectReferenceInstanteIDValue { get { UnityObject obj = objectReferenceValue; return obj ? obj.GetInstanceID() : 0; } }
Inspectorではちゃんとmissingが検出されているので、何かしら方法がないかと探っているところなのですが、どなたか情報をお持ちではないでしょうか。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Unity2018.1 検出可能
Unity2018.3 検出不可
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/09 01:59 編集