private static void BundleLuaFile(AssetBundleBuildSearchInfo info)
        {
            string path = AssetBundlePath.GameAssetsDirectory + info.searchDirectory;

            if (Directory.Exists(path))
            {
                string tempDir = AssetBundlePath.LuaTempDir;
                if (tempDir.EndsWith("/"))
                {
                    tempDir = tempDir.Substring(0, tempDir.Length - 1);
                }
                DirectoryInfo dir = new DirectoryInfo(tempDir);

                //获取到已有的lua文件(因为可能有多个地方copy lua文件到临时目录)
                FileInfo[] preFiles = dir.GetFiles("*", SearchOption.AllDirectories);

                //将当前lua文件拷贝到临时文件中
                string newPath         = AssetBundleBuildLuaUtil.CopyLuaFileToTempDirAndRenameExt(path);
                string assetBundleName = info.assetBundleName
                                         .Replace("{DirPath}", dir.FullName.Replace("\\", "/"))
                                         .Replace("{DirName}", dir.Name)
                                         .Replace(AssetBundlePath.GameAssetsDirectory, "");
                FileInfo[] files = dir.GetFiles("*", info.isOnlyTopDir ? SearchOption.TopDirectoryOnly : SearchOption.AllDirectories);
                //排除已有的文件
                List <FileInfo> addFiles = new List <FileInfo>();
                if (files != null)
                {
                    for (int i = 0; i < files.Length; i++)
                    {
                        if (preFiles != null)
                        {
                            bool isPreFile = false;
                            for (int j = 0; j < preFiles.Length; j++)
                            {
                                if (preFiles[j].FullName == files[i].FullName)
                                {
                                    isPreFile = true;
                                    break;
                                }
                            }
                            if (!isPreFile)
                            {
                                addFiles.Add(files[i]);
                            }
                        }
                        else
                        {
                            addFiles.Add(files[i]);
                        }
                    }
                }
                AddAssetBundleBuild(info, assetBundleName, addFiles.ToArray());
            }
            else
            {
                Debug.LogError("[BundleLuaFile]path not find!path = " + path);
            }
        }
        public static bool StartBuildAssetBundle(BuildTarget platform, bool isForceRebuild = false, bool onlyBuildLua = false)
        {
            AssetBundleBuildLuaUtil.CheckAndCreateLuaTempDir();

            buildResultInfo = AssetBundleBuildParseUtil.GenarateAssetBundleBuildDatas(AssetBundleConfig.GetAllGroupInfos());

            //暂时移除所有的已有bundle(即每次重新打包)
            //EditorFileOperate.RemoveDir(AssetBundlePath.GetAssetBundlePath());
            //移除不存在的bundle资源文件与文件夹
            RemoveNonexistAssetBundleFiles();

            AssetBundleBuild[] needBuildFileList = buildResultInfo.ToBuildArray();
            HashSet <string>   onlyMoveFileList  = buildResultInfo.onlyMoveFileList;

            EditorPlatformPath.CheckDirExists(AssetBundlePath.GetAssetBundlePath());

            AssetBundleBuild[] realBuildFileList = needBuildFileList;
            if (onlyBuildLua)
            {
                List <AssetBundleBuild> tempList = new List <AssetBundleBuild>();
                for (int i = 0; i < needBuildFileList.Length; i++)
                {
                    if (needBuildFileList[i].assetBundleName.IndexOf(AssetBundlePath.LuaBundleNamePre) != -1)
                    {
                        tempList.Add(needBuildFileList[i]);
                    }
                }
                realBuildFileList = tempList.ToArray();
            }
            AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(AssetBundlePath.GetAssetBundlePath(), realBuildFileList, isForceRebuild ? BuildAssetBundleOptions.ForceRebuildAssetBundle : BuildAssetBundleOptions.None, platform);

            AssetBundleBuildLuaUtil.ClearLuaTempDir();
            bool succ = true;

            if (manifest == null)
            {
                Debug.Log("BuildAssetBundle Fail!");
                return(false);
            }
            //如果只打lua文件,不需要移动这些
            if (!onlyBuildLua)
            {
                MoveFiles(onlyMoveFileList);
                MoveManifestAB();
            }
            else
            {
                DeleteManifestAB();
            }

            succ = succ && GenerateAssetBundleMappings(needBuildFileList);

            //MoveMainAssetBundle();
            //ChageAssetBundleManifetDependToRelativePath();

            AssetDatabase.Refresh();
            if (succ)
            {
                Debug.Log("BuildAssetBundle Success!");
            }
            else
            {
                Debug.Log("BuildAssetBundle Fail!");
            }
            return(true);
        }