zoukankan      html  css  js  c++  java
  • 转 代码修改buildoption

    using System;
    using System.IO;
    using UnityEditor;
    using UnityEngine;

    public class BuildPlayer : ScriptableObject
    {
    static string rootPath = Application.dataPath + Path.DirectorySeparatorChar;
    static string rootParent = new DirectoryInfo(rootPath).Parent.FullName + Path.DirectorySeparatorChar;
    static string projectName = new DirectoryInfo(rootPath).Parent.Name;
    static string scenePath = Application.dataPath + Path.DirectorySeparatorChar + "Scenes" + Path.DirectorySeparatorChar;
    static string apkNameDebug = rootParent + projectName + "_Debug_[Date].apk";
    static string apkNameRelease = rootParent + projectName + "_Release_[Date].apk";

    [MenuItem("Build Player/Build Android Debug", false, 101)]
    static void BuildAndroidDebug()
    {
    AssetDatabase.Refresh();
    // set build options and build player
    BuildOptions options = BuildOptions.Development | BuildOptions.AllowDebugging | BuildOptions.ShowBuiltPlayer;
    string[] allScenes = GetAllScenes();
    BuildPipeline.BuildPlayer(allScenes, InsertDateString(apkNameDebug), BuildTarget.Android, options);
    }

    [MenuItem("Build Player/Build Android Debug(Auto Deploy)", false, 102)]
    static void BuildAndroidDebugAutoDeploy()
    {
    AssetDatabase.Refresh();
    // set build options and build player
    BuildOptions options = BuildOptions.Development | BuildOptions.AutoRunPlayer | BuildOptions.AllowDebugging;
    string[] allScenes = GetAllScenes();
    BuildPipeline.BuildPlayer(allScenes, InsertDateString(apkNameDebug), BuildTarget.Android, options);
    }

    [MenuItem("Build Player/Build Android Debug(Auto Deploy And Connect Profiler)", false, 103)]
    static void BuildAndroidDebugAutoDeployAndConnectProfiler()
    {
    AssetDatabase.Refresh();
    // set build options and build player
    BuildOptions options = BuildOptions.Development | BuildOptions.AutoRunPlayer | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging;
    string[] allScenes = GetAllScenes();
    BuildPipeline.BuildPlayer(allScenes, InsertDateString(apkNameDebug), BuildTarget.Android, options);
    }

    [MenuItem("Build Player/Build Android Release", false, 201)]
    static void BuildAndroidRelease()
    {
    // rename all debug scripts to *.rem
    RenameDebugScripts();
    // set build options and build player
    BuildOptions options = BuildOptions.ShowBuiltPlayer;
    string[] allScenes = GetAllScenes();
    BuildPipeline.BuildPlayer(allScenes, InsertDateString(apkNameRelease), BuildTarget.Android, options);
    // restore all debug scripts' file names
    RestoreDebugScripts();
    }

    [MenuItem("Build Player/Build Android Release(Auto Deploy)", false, 202)]
    static void BuildAndroidReleaseAutoDeploy()
    {
    // rename all debug scripts to *.rem
    RenameDebugScripts();
    // set build options and build player
    BuildOptions options = BuildOptions.AutoRunPlayer;
    string[] allScenes = GetAllScenes();
    BuildPipeline.BuildPlayer(allScenes, InsertDateString(apkNameRelease), BuildTarget.Android, options);
    // restore all debug scripts' file names
    RestoreDebugScripts();
    }

    static void RenameDebugScripts()
    {
    string[] allDebugDirectories = Directory.GetDirectories(rootPath, "_Debug", SearchOption.AllDirectories);
    foreach (string directory in allDebugDirectories)
    {
    string[] scripts = Directory.GetFiles(directory, "*.cs", SearchOption.AllDirectories);
    foreach (string script in scripts)
    {
    string newScriptName = script + ".rem";
    File.Move(script, newScriptName);
    File.Delete(script + ".meta");
    }
    }
    AssetDatabase.Refresh();
    }

    static void RestoreDebugScripts()
    {
    string[] allDebugDirectories = Directory.GetDirectories(rootPath, "_Debug", SearchOption.AllDirectories);
    foreach (string directory in allDebugDirectories)
    {
    string[] renamedScripts = Directory.GetFiles(directory, "*.rem", SearchOption.AllDirectories);
    foreach (string renamedScript in renamedScripts)
    {
    string scriptName = renamedScript.Substring(0, renamedScript.Length - 3);
    File.Move(renamedScript, scriptName);
    File.Delete(renamedScript + ".meta");
    }
    }
    AssetDatabase.Refresh();
    }

    static string[] GetAllScenes()
    {
    string[] allScenes = null;
    DirectoryInfo dirInfo = new DirectoryInfo(scenePath);
    FileInfo[] fileInfos = dirInfo.GetFiles("*.unity", SearchOption.AllDirectories);
    allScenes = new string[fileInfos.Length];
    int index = 0;
    foreach (FileInfo fileInfo in fileInfos)
    {
    string scene = fileInfo.FullName.Replace(rootParent, "");
    allScenes[index++] = scene;
    }
    return allScenes;
    }

    static string InsertDateString(string apkName)
    {
    DateTime now = DateTime.Now;
    return apkName.Replace("[Date]", string.Format("[{0:d4}{1:d2}{2:d2}][{3:d2}{4:d2}{5:d2}]", now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second));
    }
    }

  • 相关阅读:
    day15---作业
    day14---函数的参数
    day14作业
    day--13函数的基本使用
    day13--函数练习(作业)
    day12--文件处理
    day12--作业
    Python函数对象、函数嵌套和闭包函数
    每日作业以及周末作业
    Python名称空间与作用域
  • 原文地址:https://www.cnblogs.com/rexzhao/p/7799722.html
Copyright © 2011-2022 走看看