示例#1
0
 void AddObjectList(string path)
 {
     objectList.Add(path);
 }
示例#2
0
        void ListDependencies(List <UnityObject> targets)
        {
            objectList = objectList ?? new ScrollableObjectList();
            objectList.Clear();
            checks.Clear();
            if (targets.Count == 1)
            {
                var target     = targets.First();
                var targetPath = AssetDatabase.GetAssetPath(target.GetInstanceID());
                // instanceID = target.GetInstanceID();
                // fileID = GetFileID(target);
                if (string.IsNullOrEmpty(targetPath))
                {
                    return;
                }
                history.Remove(target);
                history.Add(target);
                if (history.Count > 50)
                {
                    history.RemoveAt(0);
                }
                HistoryJson.Write(history);
            }
            guid = string.Join(",", Targets.Select(t => AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(t.GetInstanceID()))).ToArray());
            var targetPaths = new List <string>();
            var deps        = new List <string>();

            foreach (var o in targets)
            {
                var path = AssetDatabase.GetAssetPath(o);
                if (string.IsNullOrEmpty(path))
                {
                    continue;
                }
                targetPaths.Add(path);
                var assets = AssetDatabase.GetDependencies(path, isRecursive);
                deps.AddRange(assets.Select(AssetDatabase.AssetPathToGUID));
            }
            deps = deps.Distinct()
                   .Select(AssetDatabase.GUIDToAssetPath)
                   .Where(path => !targetPaths.Contains(path)).ToList();
            if (sortType == SortType.Extension)
            {
                deps = deps.OrderBy(x => Path.GetExtension(x)).ThenBy(x => Path.GetFileName(x)).ToList();
            }
            else if (sortType == SortType.FileName)
            {
                deps = deps.OrderBy(x => Path.GetFileName(x)).ThenBy(x => Path.GetExtension(x)).ToList();
            }
            else if (sortType == SortType.FilePath)
            {
                deps = deps.OrderBy(x => x).ToList();
            }

            foreach (var dep in deps)
            {
                var ext = Path.GetExtension(dep);
                objectList.Add(dep);
                checks[dep] = ext != ".cs" && ext != ".shader";
            }

            var all = targetPaths.Concat(deps).ToArray();

            references.Clear();
            dependencies.Clear();
            foreach (var path in all)
            {
                dependencies.Add(path, AssetDatabase.GetDependencies(path, true).ToList());
                references.Add(path, new List <string>());
            }
            foreach (var pair in dependencies)
            {
                foreach (var path in pair.Value)
                {
                    references[path].Add(pair.Key);
                }
            }
        }