public List<CFileRefrence> CalculateSpriteReference(string fileFolder, string spriteFile)
        {
            List<CFileRefrence> ret = new List<CFileRefrence>();

            string spriteGuid = ToGuid(fileFolder);
            if (spriteGuid.Length <= 0) return ret;

            string spriteName = "";
            {
                int firstIndex = spriteFile.IndexOf('.');
                if (firstIndex < 0) return ret;
                spriteName = spriteFile.Substring(0, firstIndex);
            }

            {
                foreach (string one in m_scenePath)
                {
                    string[] fileNames = Directory.GetFiles(one, "*.unity", SearchOption.AllDirectories);
                    foreach (string fileName in fileNames)
                    {
                        int reference_count = getReferenceCount(fileName, spriteGuid, spriteName);
                        if (reference_count <= 0) continue;
                        CFileRefrence fileRef = new CFileRefrence();
                        fileRef.mFileName = fileName;
                        fileRef.mRefCount = reference_count;
                        ret.Add(fileRef);
                    }
                }
            }
            {
                foreach (string one in m_prefabPath)
                {
                    string[] fileNames = Directory.GetFiles(one, "*.prefab", SearchOption.AllDirectories);
                    foreach (string fileName in fileNames)
                    {
                        int reference_count = getReferenceCount(fileName, spriteGuid, spriteName);
                        if (reference_count <= 0) continue;
                        CFileRefrence fileRef = new CFileRefrence();
                        fileRef.mFileName = fileName;
                        fileRef.mRefCount = reference_count;
                        ret.Add(fileRef);
                    }
                }
            }
            return ret;
        }
        public Dictionary<string, LinkedList<CFileRefrence>> CalculateSpriteReferenceBatch(string fileFolder, LinkedList<string> spriteFiles)
        {
            Dictionary<string, LinkedList<CFileRefrence> > fileReferences = new Dictionary<string, LinkedList<CFileRefrence> >();
            if (spriteFiles.Count <= 0) return fileReferences;

            string spriteGuid = ToGuid(fileFolder);
            if (spriteGuid.Length <= 0) return fileReferences;

            LinkedList<string> spriteNames = new LinkedList<string>();
            {
                foreach (string one in spriteFiles)
                {
                    int firstIndex = one.IndexOf('.');
                    if (firstIndex <= 0) continue;
                    spriteNames.AddLast(one.Substring(0, firstIndex));
                }
            }
            if (spriteNames.Count <= 0) return fileReferences;

            {
                foreach (string sceneName in m_scenePath)
                {
                    string[] fileNames = Directory.GetFiles(sceneName, "*.unity", SearchOption.AllDirectories);
                    foreach (string fileName in fileNames)
                    {
                        Dictionary<string, int> referenceCounts = getReferenceCounts(fileName, spriteGuid);
                        foreach (string spriteName in spriteNames)
                        {
                            int outValue = 0;
                            if (!referenceCounts.TryGetValue(spriteName, out outValue)) continue;

                            CFileRefrence oneReference = new CFileRefrence();
                            oneReference.mFileName = fileName;
                            oneReference.mRefCount = outValue;

                            LinkedList<CFileRefrence> fileReference;// = new LinkedList<CFileRefrence>();
                            if (fileReferences.TryGetValue(spriteName, out fileReference))
                            {
                                fileReference.AddLast(oneReference);
                            }
                            else
                            {
                                fileReference = new LinkedList<CFileRefrence>();
                                fileReference.AddLast(oneReference);
                                fileReferences.Add(spriteName, fileReference);
                            }
                        }
                    }
                }
            }
            {
                foreach (string one in m_prefabPath)
                {
                    string[] fileNames = Directory.GetFiles(one, "*.prefab", SearchOption.AllDirectories);
                    foreach (string fileName in fileNames)
                    {
                        Dictionary<string, int> referenceCounts = getReferenceCounts(fileName, spriteGuid);
                        foreach (string spriteName in spriteNames)
                        {
                            int outValue = 0;
                            if (!referenceCounts.TryGetValue(spriteName, out outValue)) continue;

                            CFileRefrence oneReference = new CFileRefrence();
                            oneReference.mFileName = fileName;
                            oneReference.mRefCount = outValue;

                            LinkedList<CFileRefrence> fileReference;// = new LinkedList<CFileRefrence>();
                            if (fileReferences.TryGetValue(spriteName, out fileReference))
                            {
                                fileReference.AddLast(oneReference);
                            }
                            else
                            {
                                fileReference = new LinkedList<CFileRefrence>();
                                fileReference.AddLast(oneReference);
                                fileReferences.Add(spriteName, fileReference);
                            }
                        }
                    }
                }
            }
            return fileReferences;
        }