private static void InitLoadPath(Base2 scr, FieldInfo pf) { FindAsset ap = (FindAsset)pf.GetCustomAttributes(true).FirstOrDefault(a => a is FindAsset); if (ap != null) { string name = (ap.name == null) ? pf.Name : ap.name; object value = pf.GetValue(scr); if (ap.overide || (value == null || value.Equals(null)) || (value is IEnumerable && ((IEnumerable)value).Cast <object>().Count() == 0)) { if (value is Array) { Debug.Log("FindAsset " + name); var type = value.GetType().GetElementType(); var q = Base2.GetFiles().Where(a => a.Contains(name)).Select(a => UnityEditor.AssetDatabase.LoadAssetAtPath(a, type)).Where(a => a != null); if (q.Count() == 0) { Debug.Log("could not find folder " + name); } pf.SetValue(scr, Cast(q, type)); } else { Debug.Log("FindAsset " + name); pf.SetValue(scr, Base2.FindAsset(name, pf.FieldType)); } } } }
private static void SetFindAssets(string guid, List <FindAsset> selectAssets) { var path = AssetDatabase.GUIDToAssetPath(guid); //対象のアセットと //依存関係にあるアセットをすべて取得する var deps = AssetDatabase.GetDependencies(path); foreach (string depPath in deps) { if (path == depPath) { continue; } var dependGuid = GetGuid(depPath); int count = selectAssets.Count; for (int i = 0; i < count; i++) { var asset = selectAssets[i]; if (!result.ContainsKey(asset)) { result.Add(asset, new List <FindAsset>()); } //選択したアセットと同じGUIDであれば //参照されているということになる if (dependGuid == asset.AssetGuid) { var hitName = GetAssetName(path); var hit = new FindAsset(hitName, path, guid); result[asset].Add(hit); } } } }