记个笔记
因项目需要需要写个自定义打包工具,首先unity中提供了打包的方法我们只需要调用就可以,下面是核心的打包方法,
第一个参数是需要打包的场景,
第二个是打包路径,
第三个是打包类型比如安卓包等,
最后一个是打包选项,详细内容看官方文档介绍,官方api链接:https://docs.unity3d.com/cn/2018.2/ScriptReference/BuildOptions.html
这里就简单说下,举个例子就是unity自带的打包中有build和buildandrun,两个选项,这点就是通过这最后一个参数的设置来进行区分
BuildPipeline.BuildPlayer(GetBuildScenes(), GetBuildPath(), GetBuildTarget(), BuildOptions.None);
通过上面的方法就可以自己写相应的扩展了,比如打包的时候自动更新版本号,对接导出相应的数据,与git对接等等
下面给一个我写的比较简单的打APK包的编辑器扩展脚本,需要放到Editor文件夹下,可以根据需求进一步的扩展,说明下面会报错的两个类名,
一个TextTool,这个是我自己写的一个读配置文件以及解析等的工具类,可以改成自己的方法读取与解析,
还有一个FolderBrowserHelper这个我通过windows提供的选择文件夹以及选择文件的方法类。根据不同的平台来写不同的选择路径的方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEditor;
enum PackageType
{
Android,
}
public class ProjectBuild : EditorWindow
{
//打包类型
private PackageType ProjectBuildType = PackageType.Android;
//版本号
private string VersionId = System.DateTime.Now.ToString("yyyy-MM-dd");
private string PackageName = "包名";
//打包路径,默认是获取电脑桌面
private string PackagePath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory);
//通过配置文件来控制需要打包的场景
private string ScenesPathCsv = string.Empty;
private bool IsUpdateVersion = true;
private void Awake()
{
VersionId = System.DateTime.Now.ToString("yyyy-MM-dd");
PackageName = PackageName + "_" + VersionId;
Debug.Log(PackageName);