Exemple #1
0
    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));
                }
            }
        }
    }
Exemple #2
0
    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);
                }
            }
        }
    }