Example #1
0
        private static IEnumerator CleanCore()
        {
            var builder = new StringBuilder();

            #if ENABLE_CRIWARE
            // 未使用の音ファイルを解放.
            if (SoundManagement.SoundManagement.Exists)
            {
                SoundManagement.SoundManagement.Instance.ReleaseAll();
            }
            #endif

            yield return(null);

            // キャッシュクリア.
            ExternalResources.CleanCache();

            yield return(null);

            // その他のキャッシュ.
            foreach (var cachePath in CachePaths)
            {
                if (!Directory.Exists(cachePath))
                {
                    continue;
                }

                var fs = Directory.GetFiles(cachePath);

                foreach (var item in fs)
                {
                    builder.AppendLine(item);

                    try
                    {
                        var cFileInfo = new FileInfo(item);

                        // 読み取り専用属性がある場合は、読み取り専用属性を解除.
                        if ((cFileInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                        {
                            cFileInfo.Attributes = FileAttributes.Normal;
                        }

                        File.Delete(item);
                    }
                    catch (Exception ex)
                    {
                        Debug.LogException(ex);
                    }
                }

                DirectoryUtility.DeleteEmpty(cachePath);

                yield return(null);
            }

            if (!string.IsNullOrEmpty(builder.ToString()))
            {
                builder.Insert(0, "CleanCache :");

                Debug.Log(builder.ToString());
            }
        }