/// <summary> /// Jenkins 资源检查调用此接口 /// </summary> public static void JenkinsCheck() { AssetCheckManager manager = new AssetCheckManager(); manager.OnEnable(); //检查类型list List <CheckEnumType> checkTypeList = new List <CheckEnumType> { CheckEnumType.UnKnow }; //检查项list List <CheckOption> checkOptionList = new List <CheckOption>(); //解析jenkins检查项 //GetEnvironmentVariable("变量名") string[] checkTypeArr = GetOptionArr("AssetCheckType"); if (checkTypeArr != null && checkTypeArr.Length != 0) { int arrLen = checkTypeArr.Length; for (int i = 0; i < arrLen; i++) { CheckEnumType checkType = (CheckEnumType)System.Enum.Parse(typeof(CheckEnumType), checkTypeArr[i]); checkTypeList.Add(checkType); } //收集具体检查项列表 arrLen = checkTypeList.Count; for (int i = 0; i < arrLen; i++) { var checkType = checkTypeList[i]; string[] strArr = GetOptionArr(checkType.ToString()); if (strArr == null || strArr.Length == 0) { continue; } GetOptionMix(manager, strArr, checkOptionList); } } //获得资源文件夹路径 string filePath = System.Environment.GetEnvironmentVariable("AssetPath"); manager.SetIncludeCheckTypeList(checkTypeList); manager.SetIncludeOptionList(checkOptionList); manager.SetFilePath(filePath); if (manager.GetPathListByFilePath()) { //Check manager.OnCheck(); } }
/// <summary> /// 添加打印信息 /// </summary> /// <param name="_enumType"></param> /// <param name="_path"></param> /// <param name="_checkMsg"></param> private void AddInLog(CheckEnumType _enumType, string _path, string _checkMsg) { checkLogSb.Append(_enumType); checkLogSb.Append("|"); checkLogSb.Append(_path); checkLogSb.Append("|"); checkLogSb.Append(_checkMsg); checkLogSb.Append("\r\n"); }
/// <summary> /// 添加或删除检查类型 /// </summary> /// <param name="_checkType"></param> /// <param name="_add"></param> private void SetItemWinList(CheckEnumType _checkType, bool _add = true) { AssetCheckWinItem itemWin = this.checkWinItemList.Find((item) => item.name == _checkType.ToString()); if (_add) { if (itemWin == null) { AssetCheckWinItem winItem = new AssetCheckWinItem(this, checkOptionDic[_checkType], _checkType.ToString()); checkWinItemList.Add(winItem); } } else { if (itemWin != null) { this.checkWinItemList.Remove(itemWin); } } }
/// <summary> /// 添加到未通过检查的缓存数据list里 /// </summary> /// <param name="_enumType"></param> /// <param name="_obj"></param> /// <param name="_path"></param> /// <param name="_importer"></param> /// <param name="_checkMsg"></param> private void AddInCheckDataList(CheckEnumType _enumType, UnityEngine.Object _obj, string _path, AssetImporter _importer, string _checkMsg) { //未通过的资源信息存储起来用于处理 AssetCheckData checkData = new AssetCheckData(); checkData.resourcePath = _path; checkData.obj = _obj; checkData.importer = _importer; checkData.logMsg = _checkMsg; List <AssetCheckData> checkDataList; if (!checkDataDic.TryGetValue(_enumType, out checkDataList)) { checkDataList = new List <AssetCheckData>(); checkDataDic.Add(_enumType, checkDataList); } checkDataList.Add(checkData); }
/// <summary> /// 检查类型选择 /// </summary> /// <param name="_checkTypeMix"></param> private void OnCheckTypeSelect(CheckEnumType _checkTypeMix) { var checkEnumArr = checkManager.allEnumArr; int checkEnumLen = checkEnumArr.Length; for (int i = 0; i < checkEnumLen; i++) { var checkType = checkEnumArr[i]; if (checkManager.IsSelect((int)checkType, (int)checkTypeMix)) { if (!checkTypeList.Contains(checkType)) { checkTypeList.Add(checkType); //添加当前类型的Option GUI SetItemWinList(checkType); } } else { if (checkTypeList.Contains(checkType)) { checkTypeList.Remove(checkType); //移除当前类型的Option GUI SetItemWinList(checkType, false); } } } checkManager.SetIncludeCheckTypeList(checkTypeList); //foreach(var item in checkTypeList) //{ // Debug.Log(item); //} }
private void OnGUI() { //Unable to use a named GUIStyle without a current skin. //Most likely you need to move your GUIStyle initialization code to OnGUI //GUI风格元素需要在OnGUI方法里初始化,否则会报以上错误,界面也会发生显示错误 if (checkStyle == null) { checkStyle = new CheckStyle(); } GUILayout.BeginHorizontal(checkStyle.ToolBar, new GUILayoutOption[] { GUILayout.Width(this.position.width) }); { EditorGUI.BeginChangeCheck(); checkTypeMix = (CheckEnumType)EditorGUILayout.EnumMaskPopup(new GUIContent(titleStr), checkTypeMix, checkStyle.TE_ToolBarBtn, new GUILayoutOption[] { GUILayout.Width(600) }); if (EditorGUI.EndChangeCheck()) { //检查类型分类 OnCheckTypeSelect(checkTypeMix); } EditorGUI.BeginChangeCheck(); if (GUILayout.Button(string.Format("当前目录{0}", filePath), checkStyle.TE_ToolBarBtn)) { filePath = EditorUtility.OpenFolderPanel("选择筛选目录{0}", Application.dataPath, string.Empty); var currentDir = BuildUtils.GetUnityPath(Path.GetFullPath(Directory.GetCurrentDirectory())); filePath = filePath.Replace(string.Format("{0}/", currentDir), ""); } if (EditorGUI.EndChangeCheck()) { checkManager.SetFilePath(filePath); Debug.Log(string.Format("当前选择目录:{0}", filePath)); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); { if (GUILayout.Button("Check")) { //检查 if (checkManager.GetPathListByFilePath()) { checkManager.OnCheck(); } } if (GUILayout.Button("Format")) { //处理 checkManager.OnFormat(); } } GUILayout.EndHorizontal(); #region 表格GUI绘制 //表格 GUI 绘制 Rect viewRect = new Rect(border * 2 + this.position.width * percet, offset * 2, this.position.width * (1 - percet) - border * 3, this.position.height - offset * 2 - border); if (table != null) { table.Draw(viewRect); } #endregion #region 检查项GUI绘制 //检查项 itemlist 绘制 Rect itemViewRect = new Rect(border, offset * 2, this.position.width * percet, this.position.height - offset * 2 - border); GUILayout.BeginArea(itemViewRect, checkStyle.WindowBackground); scrollview = GUILayout.BeginScrollView(scrollview, GUIStyle.none, GUI.skin.verticalScrollbar); DrawItemWind(itemViewRect); GUILayout.EndScrollView(); GUILayout.EndArea(); #endregion }