游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7885|回复: 0

Unity开发:一个带版本管理的打包工具

[复制链接]

3

主题

8

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2014-11-23 13:30:21 | 显示全部楼层 |阅读模式
主要功能:
1.将工程中
resourcesPath下面所有目标后缀文件有选择性构建AssetBundle资源包:通过VersionManager.Update将已经打过包并且没有发生改变的目标文件进行过滤处理,只针对新的或有改变的目标文件进行打包。
2.使用版本管理器,根据所有目标文件的状态,生产相应的md5列表文件,以及版本号列表文件:m5码列表文件用来判断当前文件是否发生改变,
版本号列表文件则用来让客户端进行有针对性的版本更新,可通过比较新旧版本号列表文件,过滤出需要更新的所有目标文件,参考,VersionManager.GetUpdatedFiles。

核心代码:
1.版本管理器,参考上一篇日志:C#代码:一个简单的版本管理器类2.PathUtils,主要用类集中管理几个关键目录的定义,代码略,可自行封装。
3.Exporter:
using UnityEngine;
using UnityEditor;
using System.IO;


public static class Exporter
{
        static BuildAssetBundleOptions options;
        static BuildTarget buildTarget;
        static string exportPath;
        static string resourcesPath;


        static Exporter ()
        {
                options = BuildAssetBundleOptions.CollectDependencies
                        | BuildAssetBundleOptions.CompleteAssets
                        | BuildAssetBundleOptions.UncompressedAssetBundle;  


                buildTarget = EditorUserBuildSettings.activeBuildTarget;


                exportPath = PathUtils.GetAssetBundlesPath ();
                if (! System.IO.Directory.Exists (exportPath))
                        System.IO.Directory.CreateDirectory (exportPath);   


                resourcesPath = PathUtils.GetResoucesPath ();
        }


        static void ExportResourcesWithSuffix (string suffix)
        {
                string[] files = Directory.GetFiles (resourcesPath, suffix);
                if (files.Length > 0) {
                        for (int i = 0; i < files.Length; i++) {
                                var file = files ;
                                if (VersionManager.Update (file)) {
                                        Object mainAsset = AssetDatabase.LoadMainAssetAtPath (file);
                                        string pathName = exportPath + PathUtils.GetExportedName (file);
                                        BuildPipeline.BuildAssetBundle (mainAsset, null, pathName, options, buildTarget);
                                }
                        }
                }
        }
   
        [MenuItem("Assets/Export Resources")]
        static void ExportResources ()
        {  
                VersionManager.Began ();
                //export prefab
                ExportResourcesWithSuffix ("*.prefab");  
                //export txt
                ExportResourcesWithSuffix ("*.txt");


                VersionManager.Ended ();
        }
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 23:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表