孙广东     2016.7.24
Unity3d的Build后处理   就是打完包之后的回调,你可以发出邮件通知或者对这个包最什么操作都可以!
,和场景build前处理, build场景之前你是可以对场景做一下操作的, 比如检查一些全局的状态等等!
http://blog.csdn.net/u010019717
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System;
using Object = UnityEngine.Object;// C#中使用该函数首先导入命名空间:
using System.Runtime.InteropServices; // http://blog.csdn.net/bpy/article/details/6886638
public class BuildPostprocessor
{// 然后写API引用部分的代码,放入 class 内部[DllImport("user32.dll", EntryPoint = "FindWindow")]private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", EntryPoint = "FindWindowEx")] private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); // 获取到该窗口句柄后,可以对该窗口进行操作.比如,关闭该窗口或在该窗口隐藏后,使其显示[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
/*其中ShowWindow(IntPtr hwnd, int nCmdShow);
nCmdShow的含义
0 关闭窗口
1 正常大小显示窗口
2 最小化窗口
3 最大化窗口
使用实例: ShowWindow(myPtr, 0);
*/[DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam); // 你可以使用VS自带的工具spy++  找出相关控件的下面四个参数const int WM_GETTEXT = 0x000D; const int WM_SETTEXT = 0x000C; // const int WM_CLICK = 0x00F5;const int BM_CLICK = 0xF5; static string lpszParentClass = "#32770"; //整个窗口的类名    这个代表 对话框   , 没有这个使用下一个参数也可以static string lpszParentWindow = "Building Player"; //窗口标题       static string lpszClass_Submit = "Button"; //需要查找的Button的类名 static string lpszName_Submit = "Cancel"; //需要查找的Button的标题 /// <summary>/// Building的 后处理/// todo 需要打开这个所在的路径(文件夹)   这个Unity会自动打开/// </summary>[PostProcessBuildAttribute(1)]public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject){Debug.Log("打包完成 =========================" + pathToBuiltProject);}/// <summary>/// Building场景的 前处理/// OK /// </summary>[PostProcessSceneAttribute(2)]public static void OnPostprocessScene(){//GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);//cube.transform.position = new Vector3(0.0f, 0.5f, 0.0f);var gameEventCenter = Object.FindObjectOfType<GameEventCenter>();if (gameEventCenter){if (!gameEventCenter.TutorialOn){if (EditorUtility.DisplayDialog("确定不开启新手引导么?","你没有开启新手引导", "取消,需要手动", "继续")){Debug.Log("==================================" + "取消打包");IntPtr ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);   if (ParenthWnd != IntPtr.Zero)   {   Debug.Log("==================================" + "找到窗口");// ShowWindow(ParenthWnd, 0);     // 直接销毁这个窗口并没有什么卵用,因为进程还在跑//得到Button这个子窗体,并触发它的Click事件 IntPtr EdithWnd = FindWindowEx(ParenthWnd, new IntPtr(0), lpszClass_Submit, lpszName_Submit); if (!EdithWnd.Equals(IntPtr.Zero)) { Debug.Log("==================================" + "得到了Button");SendMessage(EdithWnd, BM_CLICK, new IntPtr(0), "0"); // SendMessage(EdithWnd, BM_CLICK, EdithWnd, lpszName_Submit); // SendMessage(EdithWnd, BM_CLICK, EdithWnd, lpszName_Submit); } else{Debug.Log("==================================" + "没找到Button");}}}else{Debug.Log("==================================" + "继续打包");}}}}
}

Unity3d的Build后处理,和场景build前处理相关推荐

  1. 从Ant Build演进Gradle Build:导入Ant Build文件

    在大型项目上更改构建系统可能很困难并且需要大量工作. 幸运的是,对于那些将Ant版本迁移到Gradle版本的人,Gradle提供了特别方便的机制来促进这种迁移 . 由于Gradle基于Groovy构建 ...

  2. Unity3D制作3D虚拟漫游场景(二)

    传送门: Unity3D制作3D虚拟漫游场景(一) -------------------------------------------------------------------------- ...

  3. unity3D海底珊瑚礁、珊瑚岛场景和海底植物岩石素材素材包

    unity3D海底珊瑚礁.珊瑚岛场景和素材 详情如下图:(下载链接在文末) 下载链接 https://download.csdn.net/download/weixin_43474701/549722 ...

  4. build文件下的build.js解释

    //bulid.js是webpack的打包文件,通过配置package.json中的script来执行脚本.命令号npm run build即运行node build/build.js 'use st ...

  5. IDEA build委托到Maven build

    首先吐槽一下Intellij IDEA的一个坑 -- IDEA中的maven项目下,可能出现这种情况:代码编辑器中无编译错误,通过maven 的clean .compile.package进行各种操作 ...

  6. Windows 11 Insider Preview Build 22621.746 和 Build 22623.746 (KB5018490)发布!

    今天微软向 Beta 频道发布Windows 11 Insider Preview Build 22621.746 和 Build 22623.746 (KB5018490) .此次更新带来了系统托盘 ...

  7. Build.VERSION.SDK_INT < Build.VERSION_CODES.O的含义

    安卓系统版本的理解 1.VERSION和VERSION_CODES的理解 2.安卓系统版本和安卓api版本关系列表 1.VERSION和VERSION_CODES的理解 VERSION是当前系统版本 ...

  8. Android Studio调用系统的代码中Build.VERSION.SDK_INT >= Build.VERSION_CODES.xxx

    常用来判断sdk版本如下 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //包含新的api的代码块} else { //包含旧的ap ...

  9. 什么是Build Path?为什么使用Build Path?

    什么是Build Path? Build Path是指定Java工程所包含的资源属性集合. 在一个成熟的Java工程中,不仅仅有自己编写的源代码,还需要引用系统运行库(JRE).第三方的功能扩展库.工 ...

最新文章

  1. Debian rails Puma god 开机启动
  2. Matlab R2016a中如何完美运行“mex-setup”
  3. 最长公共子序列(JAVA实现)
  4. SAP Commerce Cloud ( 电商云 ) 路由路径的自定义配置与开发
  5. javamail实现邮箱验证功能
  6. leetcode 删除排序数组中的重复项
  7. Asp.net mvc中Controller的返回值
  8. oppo android root工具箱,oppo R11(全网通 安卓8.1)手机完美获取root教程,最强root工具,亲测可用!...
  9. python做音频格式转换
  10. Vue.js快速原型开发问题汇总
  11. 分享新作:休闲小游戏『Flying Stone』
  12. 骑行318、 2016.7.13
  13. STM32驱动WS2812B-2020 RGB彩灯(一)
  14. Ubuntu下为你的Jupyter Notebook配置桌面快捷方式和应用图标
  15. SQL必知必会第十四节挑战题
  16. IE8中文正式版下载
  17. php时间计算,计算本周一或周日,上周一或周日,下周一
  18. Intel 快速存储蓝屏
  19. BDD - Specflow Bindings
  20. 【KEIL MDK使用AStyle程序格式化操作】

热门文章

  1. 【计算机毕业设计】028房屋租赁系统
  2. har rv模型 matlab,基于HAR预测模型的市场异质性研究.docx
  3. 【ko-time】核心代码解析笔记
  4. java把mysql大数据量表每个文件最多10MB分批次写入到txt文件中
  5. 声明:关于原创与转载的标注
  6. MapReduce 数据倾斜以及解决思路
  7. 100种思维模型之升维思维模型-026
  8. 2020 最佳 Game Jam 提名团队专访:做一款游戏需要多久,48 小时就够啦
  9. 【负荷预测】长短期负荷预测(Matlab代码实现)
  10. pari的用法(stl)