Beispiel #1
0
    //-------------------------------------------------------------------------
    void _copyDir(Casinos._eEditorRunSourcePlatform platform, string path_src, string path_dst)
    {
        DirectoryInfo dir = new DirectoryInfo(path_src);

        FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();// 获取目录下(不包含子目录)的文件和子目录
        foreach (FileSystemInfo i in fileinfo)
        {
            if (i is DirectoryInfo)// 判断是否文件夹
            {
                if (!Directory.Exists(path_dst + "\\" + i.Name))
                {
                    Directory.CreateDirectory(path_dst + "\\" + i.Name);
                }
                _copyDir(platform, i.FullName, path_dst + "\\" + i.Name);// 递归调用复制子文件夹
            }
            else
            {
                string file_extension = Path.GetExtension(i.FullName);
                if (DoNotPackFileExtention.Contains(file_extension))
                {
                    continue;
                }

                File.Copy(i.FullName, path_dst + "\\" + i.Name, true);// 不是文件夹即复制文件,true表示可以覆盖同名文件
            }
        }
    }
Beispiel #2
0
    //-------------------------------------------------------------------------
    void _genDataFileList2(StreamWriter sw, HashSet <string> ignore_files, string cur_path, string path_dst)
    {
        string[] files = Directory.GetFiles(cur_path);
        foreach (var i in files)
        {
            string directory_name = Path.GetDirectoryName(i);
            directory_name = directory_name.Replace(@"\", "/");
            directory_name = directory_name.Substring(directory_name.LastIndexOf("/") + 1);
            string file_name = Path.GetFileName(i);

            if (ignore_files.Contains(file_name))
            {
                continue;
            }

            string file_extension = Path.GetExtension(i);
            if (DoNotPackFileExtention.Contains(file_extension))
            {
                continue;
            }

            string file_directory = Path.GetDirectoryName(i);
            file_directory = file_directory.Replace(@"\", "/");
            string target_path = file_directory.Replace(path_dst, "");
            string file_path   = i;

            string file_md5 = _calcOneFileMD5(target_path, file_name, file_path);
            sw.WriteLine(file_md5);
        }

        string[] directorys = Directory.GetDirectories(cur_path);
        foreach (var i in directorys)
        {
            _genDataFileList2(sw, ignore_files, i, path_dst);
        }
    }
Beispiel #3
0
    //-------------------------------------------------------------------------
    void _buildAssetBundle(Casinos._eEditorRunSourcePlatform platform, bool selected_or_all)
    {
        BuildTarget      build_target       = BuildTarget.Android;
        BuildTargetGroup build_target_group = BuildTargetGroup.Android;

        switch (platform)
        {
        case Casinos._eEditorRunSourcePlatform.Android:
            build_target       = BuildTarget.Android;
            build_target_group = BuildTargetGroup.Android;
            break;

        case Casinos._eEditorRunSourcePlatform.IOS:
            build_target       = BuildTarget.iOS;
            build_target_group = BuildTargetGroup.iOS;
            break;

        case Casinos._eEditorRunSourcePlatform.PC:
            build_target       = BuildTarget.StandaloneWindows64;
            build_target_group = BuildTargetGroup.Standalone;
            break;
        }
        EditorUserBuildSettings.SwitchActiveBuildTarget(build_target_group, build_target);

        UnityEngine.Object[] select_objs = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets);

        Dictionary <string, List <string> > map_single_pkg  = new Dictionary <string, List <string> >();
        Dictionary <string, List <string> > map_fold_pkg    = new Dictionary <string, List <string> >();
        Dictionary <string, List <string> > map_fold_launch = new Dictionary <string, List <string> >();

        foreach (var i in select_objs)
        {
            string path_asset = AssetDatabase.GetAssetPath(i);

            string extension = Path.GetExtension(path_asset);
            if (DoNotPackFileExtention.Contains(extension) || string.IsNullOrEmpty(extension))
            {
                continue;
            }

            string file_name = Path.GetFileName(path_asset);

            if (path_asset.Contains(AssetBundleSingleFoldName))
            {
                string key = Directory.GetParent(path_asset).Name;

                List <string> list_directory = null;
                map_single_pkg.TryGetValue(key, out list_directory);
                if (list_directory == null)
                {
                    list_directory      = new List <string>();
                    map_single_pkg[key] = list_directory;
                }

                list_directory.Add(path_asset);
            }
            else if (path_asset.Contains(AssetBundlePkgFoldFoldName))
            {
                string fold = path_asset;
                fold = fold.Replace("Assets/", "");
                fold = fold.Replace(AssetBundlePkgFoldFoldName + "/", "");
                fold = EditorContext.Instance.PathStreamingAssets + platform.ToString() + "/" + fold;
                fold = fold.Replace(file_name, "");

                List <string> list_directory = null;
                map_fold_pkg.TryGetValue(fold, out list_directory);
                if (list_directory == null)
                {
                    list_directory     = new List <string>();
                    map_fold_pkg[fold] = list_directory;
                }

                list_directory.Add(path_asset);
            }
            else if (path_asset.Contains(AssetBundleLaunchFoldName))
            {
                string fold = path_asset;
                fold = fold.Replace("Assets/", "");
                fold = EditorContext.Instance.PathStreamingAssets + platform.ToString() + "/" + fold;
                fold = fold.Replace(file_name, "");

                List <string> list_directory = null;
                map_fold_launch.TryGetValue(fold, out list_directory);
                if (list_directory == null)
                {
                    list_directory        = new List <string>();
                    map_fold_launch[fold] = list_directory;
                }

                list_directory.Add(path_asset);
            }
        }

        bool b = _pakABSingleEx(map_single_pkg, platform, build_target);

        if (!b)
        {
            Debug.LogError("BuildAssetBundle失败!");
            return;
        }

        foreach (var i in map_fold_pkg)
        {
            List <string>       list_samefold_file = i.Value;
            AssetBundleManifest ab_manifest        = _pakABFoldEx(i.Key, list_samefold_file, build_target);

            if (ab_manifest == null)
            {
                Debug.LogError("BuildAssetBundle失败!");
                return;
            }
        }

        foreach (var i in map_fold_launch)
        {
            List <string>       list_samefold_file = i.Value;
            AssetBundleManifest ab_manifest        = _pakABFoldEx(i.Key, list_samefold_file, build_target);

            if (ab_manifest == null)
            {
                Debug.LogError("BuildAssetBundle失败!");
                return;
            }
        }

        ShowNotification(new GUIContent("BuildAssetBundle Finished!"));
    }