项目进行中,领导要求能够进行一键设置Player settings及自动打包并设置apk的位置,所以自己就上网搜索了很多大神的文章.最后是完成了领导需要的功能,在这里记录并分享一下(此项指针对安卓apk)

1.设置Player settings

参考1.1:https://docs.unity3d.com/ScriptReference/PlayerSettings.html(大家可以去看一下unity提供的API,下面只写一下,我用到的部分)

private static void SetBwPlayerSetting(string bundleIdentifier,string keyStoreName,string keystorePass="123456") {
    PlayerSettings.companyName = COMPANYNAME;
    PlayerSettings.productName = PRODUCTNAME;
    PlayerSettings.applicationIdentifier = bundleIdentifier;// "com.playbyone.chyz.bw";
    PlayerSettings.bundleVersion = BUNDLEVERSION;
    PlayerSettings.Android.bundleVersionCode = BUNDLEVERSIONCODE;

    PlayerSettings.Android.keystoreName = keyStoreName;
    PlayerSettings.keystorePass = keystorePass;
}    

上述代码能够改变图中红色框选的部分

2.更改Plugins-->Android下的sdk,因为,不同的渠道使用不同的sdk文件

参考2.1:https://www.2cto.com/kf/201601/487911.html  (写的非常好的文件夹及文件的操作,我就不贴上自己写的不是太好的代码了,雨松大神下面的参考4.1里面也有文件夹的操作,喜欢的朋友可以自行选择操作)

3.检测Plugins-->Android下的sdk渠道更改完成

参考3.1:http://vr.99.com/news/01102017/002437218.shtml

参考3.2:http://www.ceeger.com/Script/AssetPostprocessor/AssetPostprocessor.OnPostprocessAllAssets.html

(也是参考了上述的文章,帮助很大,并且在参考3.1的基础上完成了自己的需求)

4.检测到文件已是最新的之后,开始执行打包命令

参考4.1:http://www.360doc.com/content/16/0326/11/7014874_545353578.shtml

(照例是看了雨松大神的打包,然后发现shell什么的完全不会,然后截选了里面自己能够使用的代码)

 using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine; public class BwUnityScripsCompiling:AssetPostprocessor { //private static List<string> BuildApk = new List<string>();
private static bool BuildApk = false;
//private static bool BuildFinish = false; public static void StartBuildApk()
{
BuildApk = true;
//BuildFinish = false;
return;
}
/// <summary>
/// 进行update绑定
/// </summary>
static BwUnityScripsCompiling()
{
EditorApplication.update += Update;
}
/// <summary>
/// 检测导入.删除,移动,资源,使用 PlayerPrefs.SetInt进行存储
/// </summary>
/// <param name="importedAssets"></param>
/// <param name="deletedAssets"></param>
/// <param name="movedAssets"></param>
/// <param name="movedFromAssetPaths"></param>
public static void OnPostprocessAllAssets(
String[] importedAssets,
String[] deletedAssets,
String[] movedAssets,
String[] movedFromAssetPaths) {
List<string> importedKeys = new List<string>() { "Assets/Plugins/Android/StoreSDK" };// 可添加文件夹子集
for (int i = ; i < importedAssets.Length; i++) {
for (int j = ; j < importedKeys.Count; j++) {
if (importedAssets[i].Contains(importedKeys[j])) {
PlayerPrefs.SetInt("ImportScripts", );
return;
}
}
}
}
/// <summary>
/// 判断unity编译更新文件是否完成
/// </summary>
private static void Update() {
bool importScripts = Convert.ToBoolean(PlayerPrefs.GetInt("ImportScripts", ));
if (importScripts && !EditorApplication.isCompiling) {
OnUnityScripsCompilingCompleted();
importScripts = false;
PlayerPrefs.SetInt("ImportScripts", );
EditorApplication.update -= Update;
}
}
/// <summary>
/// unity文件编译完成之后,可执行打包动作
/// </summary>
private static void OnUnityScripsCompilingCompleted() {
Debug.Log("Unity Scrips Compiling completed.Start building........");
if (BuildApk == false)
return;
BuildApk = false;
BuildGameBag();
}
/// <summary>
/// 方法一:使用虚拟按键执行打包程序 执行:File-->Buile&Run
/// </summary>
/// <param name="bVk"></param>
/// <param name="bScan"></param>
/// <param name="dwFlags"></param>
/// <param name="dwExtraInfo"></param>
//[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
//private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
//public static void BuildGameBag()
//{
// const byte VK_CONTROL = 0x11;
// const byte VK_B = 0x42;
// const int KEYEVENTF_DOWN = 0x00;
// const int KEYEVENTF_KEYUP = 0x02; // keybd_event(VK_CONTROL, 0, KEYEVENTF_DOWN, 0);
// keybd_event(VK_B, 0, KEYEVENTF_DOWN, 0);
// keybd_event(VK_B, 0, KEYEVENTF_KEYUP, 0);
// keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
//} //在这里找出你当前工程所有的场景文件,假设你只想把部分的scene文件打包 那么这里可以写你的条件判断 总之返回一个字符串数组。
static string[] GetBuildScenes()
{
List<string> names = new List<string>();
foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes)
{
if (e == null)
continue;
if (e.enabled)
{
names.Add(e.path);
//Debug.LogError("参与打包场景的路径:" + e.path);
}
}
//Debug.LogError("添加的场景的个数为:" + names.Count);
return names.ToArray();
} /// <summary>
/// 方法二:利用unity3d自带API执行打包程序 执行:File-->Build
/// </summary>
public static void BuildGameBag()
{
//Debug.LogError("测试自动打包Android::BuildForAndroid1()"); PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "BW");//设置标签,打包的为Android
string path = "C:/Users/Administrator/Desktop/Productvivo11.apk";//Path.GetFullPath(".") + "/Product2.apk"; // Debug.LogError("这是打完之后的包,存放的路径:" + path);
BuildPipeline.BuildPlayer(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.None);//开始进行打包...... // Debug.LogError("测试自动打包Android::BuildForAndroid2()"); } }

5.打包完成之后的检测可进行自己想要的操作

 using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEngine; public static class BwPostProcess { #if UNITY_EDITOR
[PostProcessBuild()]
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{ if (target == BuildTarget.Android)
{
//在里面可以进行自己想要的操作
}
}
#endif
}

暂时告一段落,并且执行无问题

unity3d在菜单栏,一键设置Player setting及自动打包并设置apk的存储位置的更多相关文章

  1. 播放器设置 Player Settings

    原地址:http://game.ceeger.com/Manual/class-PlayerSettings.html#Android Player Settings is where you def ...

  2. 17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置:

    17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置: 在一个复制master,你必须启用binary loggin ...

  3. 一键安装 redmine on windows 和发邮件设置

    一键安装 redmine on windows 和发邮件设置 1)使用http://bitnami.org/stack/redmine一键安装redmine (windows). 2)修改下面的文件: ...

  4. Python小游戏——外星人入侵(保姆级教程)第一章 01创建Pygame窗口 02创建设置类Setting()

    系列文章目录 第一章:武装飞船 01:创建Pygame窗口以及响应用户输入 02:创建设置类Setting() 一.前期准备 1.语言版本 Python3.9.0 2.编译器 Pycharm2022 ...

  5. cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

    链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程 ...

  6. 禁止Cnario Player启动后自动开始播放

    Cnario Player安装激活后, 默认开机后自动启动, 启动加载内容完成后进入10秒倒计时, 10秒后即开始播放关机前播放的内容. 如果不想让其自动开始播放, 可按照如下办法设置其不自动播放. ...

  7. webstorm设置修改文件后自动编译并刷新浏览器页面

    转载:http://www.cnblogs.com/ssrsblogs/p/6155747.html 重装了 webstorm ,从10升级到了2016 一升不要紧,打开老项目,开启webpakc-d ...

  8. Spring Boot 应用使用spring session+redis启用分布式session后,如何在配置文件里设置应用的cookiename、session超时时间、redis存储的namespace

    现状 项目在使用Spring Cloud搭建微服务框架,其中分布式session采用spring session+redis 模式 需求 希望可以在配置文件(application.yml)里设置应用 ...

  9. APUE学习之三个特殊位 设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky

    设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky   set-user-ID: SUID      当文件的该位有设置时,表示当该文件被执行时,程序具有文件 ...

随机推荐

  1. 39. leetcode 326. Power of Three

    326. Power of Three Given an integer, write a function to determine if it is a power of three. Follo ...

  2. 1. 数字根(Digital Root)

    数字根(Digital Root)就是把一个自然数的各位数字相加,再将所得数的各位数字相加,直到所得数为一位数字为止.而这个一位数便是原来数字的数字根.例如: 198的数字根为9(1+9+8=18,1 ...

  3. Hadoop 新生报道(二) hadoop2.6.0 集群系统版本安装和启动配置

    本次基于Hadoop2.6版本进行分布式配置,Linux系统是基于CentOS6.5 64位的版本.在此设置一个主节点和两个从节点. 准备3台虚拟机,分别为: 主机名 IP地址 master 192. ...

  4. SpringMVC+MyBatis 事务管理二

    前言 上篇主要从编程式事务和声明式事务注解的形式来了解了事务,而这篇我们针对AOP的方式来实现事务.先回顾下事务的基础知识事务的隔离级别和事务的传播行为.使用aop 配置事务时注意引用aspectjw ...

  5. .net Ajax使用

    function CheckUsername() { var strName = $("#txtUserName").val(); $.ajax({ type: "GET ...

  6. python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer

    在网上看到了SocketServer模块,于是Server端简化: #coding:utf-8 import socketserver class MyTCPHandler(socketserver. ...

  7. NYOJ--927--dfs--The partial sum problem

    /* Name: NYOJ--927--The partial sum problem Author: shen_渊 Date: 15/04/17 19:41 Description: DFS,和 N ...

  8. 【NO.5】jmeter-结果文件

    Jmeter的结果文件可以保存很多内容,你需要看哪个就勾选哪个,很简单是吧. 结果文件可以保存为2种形式:XML或者CSV.我印象里在书上提到过,如果保存为XML形式的结果文件,后续可以转化为表格便于 ...

  9. 马的遍历 洛谷 p1443

    题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出 ...

  10. 多表连接的三种方式 HASH MERGE NESTED

    多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP------------------------------------------------------20 ...