public static bool IsNeedBuild(BundleData bundle) { if (BuildManager.IsIgnoreState) { return(true); } string outputPath = GenerateOutputBundlePath(bundle.name); if (!File.Exists(outputPath)) { return(true); } BundleBuildState bundleBuildState = BundleManager.GetBuildState(bundle.assetPath); if (bundleBuildState == null) { return(true); } // 输出文件是否被修改 DateTime lastBuildTime = File.GetLastWriteTime(outputPath); DateTime bundleChangeTime = bundleBuildState.changeTime == -1 ? DateTime.MaxValue : DateTime.FromBinary(bundleBuildState.changeTime); if (System.DateTime.Compare(lastBuildTime, bundleChangeTime) < 0) { return(true); } if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(bundle.assetPath)) < 0) { return(true); } // 依赖是否改变 if (!EqualStrArray(bundle.depends, bundleBuildState.lastDependencies)) { return(true); } string[] allResDepends = GetFilterCsDepends(bundle.assetPath); for (int i = 0; i < allResDepends.Length; i++) { var fullPaht = BundleHelp.AssetPath2FullPath(ref allResDepends[i]); DateTime test = File.GetLastWriteTime(fullPaht); if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(fullPaht)) < 0) { return(true); } if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(fullPaht + ".meta")) < 0) { return(true); } } // 依赖文件是否被改变 //for (int i = 0; i < bundle.depends.Count; i++) //{ // // TODO:没有检测纹理之内的资源是否变化 // if (!File.Exists(GenerateOutputBundlePath(Path.GetFileNameWithoutExtension(bundle.depends[i])))) // return true; // if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(bundle.depends[i])) < 0) // { // return true; // } // // meta change // // Texture Format Change // if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(bundle.depends[i] + ".meta")) < 0) // { // return true; // } //} return(false); }