当前位置: 首页 > news >正文

建设网站都需要哪些oa信息化管理系统平台

建设网站都需要哪些,oa信息化管理系统平台,连云港做网站最好,北京seo排名外包具体流程#xff1a; 找到工程中使用到的所有字体找到工程和场景中包含Text的所有对象展示要替换的字体名字让用户选择通过用户选择的字体#xff0c;展示响应的物体对象一键替换 通过AssetDatabase.FindAssets找到工程中包含的所有字体#xff1a; private Liststrin…具体流程 找到工程中使用到的所有字体找到工程和场景中包含Text的所有对象展示要替换的字体名字让用户选择通过用户选择的字体展示响应的物体对象一键替换 通过AssetDatabase.FindAssets找到工程中包含的所有字体 private Liststring FindAllFonts(){Liststring list new Liststring();// 获取所有字体文件string[] fontGUIDs AssetDatabase.FindAssets(t:Font);foreach (string fontGUID in fontGUIDs){string fontPath AssetDatabase.GUIDToAssetPath(fontGUID);Font font AssetDatabase.LoadAssetAtPathFont(fontPath);list.Add(font.name);}list.Add(Arial);//默认字体添加进去return list;} 通过AssetDatabase.FindAssets找到工程中的所有预制体 private ListGameObject GetAllPrefabByAssetDatabase(params string[] path){ListGameObject _prefabList new ListGameObject();string[] _guids AssetDatabase.FindAssets(t:Prefab, path);string _prefabPath ;GameObject _prefab;foreach (var _guid in _guids){_prefabPath AssetDatabase.GUIDToAssetPath(_guid);_prefab AssetDatabase.LoadAssetAtPath(_prefabPath, typeof(GameObject)) as GameObject;_prefabList.Add(_prefab);} #if UNITY_2020_1_OR_NEWERText[] texts GameObject.FindObjectsOfTypeText(true);foreach (var text in texts){_prefabList.Add(text.gameObject);} #elseScene activeScene EditorSceneManager.GetActiveScene();GameObject[] allObjectsInScene activeScene.GetRootGameObjects();foreach (var obj in allObjectsInScene){Text[] texts obj.GetComponentsInChildrenText(true);foreach (var text in texts){_prefabList.Add(text.gameObject);}} #endifreturn _prefabList;} 过滤没有含Text组件的对象 private ListGameObject FilterNoTextPrefabs(){ListGameObject templist new ListGameObject();Dic_Font_Prefabs.Clear();foreach (var prefab in prefabs){Text[] texts prefab.GetComponentsInChildrenText(true);if (texts.Length ! 0){foreach (var text in texts){if (text.font ! null){if (!Dic_Font_Prefabs.ContainsKey(text.font.name)){Dic_Font_Prefabs.Add(text.font.name, new ListGameObject());//根据Font类型添加一个Text集合到字典中}if (!Dic_Font_Prefabs[text.font.name].Contains(prefab)){Dic_Font_Prefabs[text.font.name].Add(prefab);}if (!templist.Contains(prefab)){templist.Add(prefab);//包含该Text的预制体添加到集合中}}}}}return templist;} 最后用户选择完要替换的字体选择开始替换即可。 TextMeshPro跟Text是一个道理只需要把代码中响应的Text和Font改为TextMeshProGUI和FontAssets即可。 最后附上完整代码 using System.Collections.Generic; using UnityEngine; using UnityEditor; using UnityEditorInternal; using UnityEngine.UI; using System.Linq; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement; /// summary /// 查找替换工程场景中Text的Font /// /summary public class ChangePrefabFont : EditorWindow {[MenuItem(Tools/替换字体/Text)]//入口static void GetWindow()//静态函数{//创建窗口ChangePrefabFont window EditorWindow.GetWindowChangePrefabFont(Text字体替换窗口);//生成一个unity窗口弹窗window.Show();//展示OnGUI中的界面显示}#region 属性/// summary/// 工程中包含的字体的名字/// /summaryListstring fontsOnAssets new Liststring();/// summary/// 对应字体是否需要替换/// /summaryListbool textPaidFontRelpace new Listbool();/// summary/// 代替要替换的字体的字体/// /summaryListFont textReplaceFonts new ListFont();/// summary/// 预制体集合/// /summaryListGameObject prefabs new ListGameObject();/// summary/// 根据字体类型分类的预制体对象/// /summaryDictionarystring, ListGameObject Dic_Font_Prefabs new Dictionarystring, ListGameObject();#endregionprivate void OnEnable(){InitFont();}private void OnGUI(){InitPrefabs();#region 显示替换选项EditorGUILayout.LabelField(下面是工程中包含的字体和工程中场景中的对象使用的字体情况。请选择要替换的字体);for (int i 0; i fontsOnAssets.Count; i){EditorGUILayout.BeginHorizontal();EditorGUILayout.LabelField($更换[{fontsOnAssets[i]}]字体);textPaidFontRelpace[i] EditorGUILayout.Toggle(textPaidFontRelpace[i], GUILayout.Width(position.width));//是否要替换当前字体的复选框EditorGUILayout.EndHorizontal();EditorGUILayout.BeginHorizontal();EditorGUILayout.LabelField($ 预制体数量{GetGetUseFontPrefabCount(fontsOnAssets[i])});if (!textPaidFontRelpace[i]){if (Dic_Font_Prefabs.ContainsKey(fontsOnAssets[i])){foreach (var item in Dic_Font_Prefabs[fontsOnAssets[i]]){if (prefabs.Contains(item)){prefabs.Remove(item);}}}}else{EditorGUILayout.LabelField($代替【{fontsOnAssets[i]}】的字体);textReplaceFonts[i] (Font)EditorGUILayout.ObjectField(textReplaceFonts[i], typeof(Font), true);//代替的字体复选框if (Dic_Font_Prefabs.ContainsKey(fontsOnAssets[i])){foreach (var item in Dic_Font_Prefabs[fontsOnAssets[i]]){if (!prefabs.Contains(item)){prefabs.Add(item);}}}}EditorGUILayout.EndHorizontal();}EditorGUILayout.Space();#endregion#region 开始替换操作if (GUILayout.Button(开始替换)){if (textReplaceFonts null || textReplaceFonts.Count 0){EditorUtility.DisplayDialog(提示, 没有字体, 确定);return;}if (prefabs null || prefabs.Count 0){EditorUtility.DisplayDialog(提示, 没有需要替换的对象, 确定);return;}ListGameObject ReplaceGo new ListGameObject();Dictionarystring, Font Dic_Font_ReplaceFont new Dictionarystring, Font();for (int i 0; i textPaidFontRelpace.Count; i){if (textPaidFontRelpace[i] true){if (textReplaceFonts[i] ! null){if (Dic_Font_Prefabs.ContainsKey(fontsOnAssets[i])){ReplaceGo.AddRange(Dic_Font_Prefabs[fontsOnAssets[i]]);Dic_Font_ReplaceFont.Add(fontsOnAssets[i], textReplaceFonts[i]);}else{EditorUtility.DisplayDialog(提示, $使用了【{fontsOnAssets[i]}】字体的预制体数量为0, 确定);}}else{EditorUtility.DisplayDialog(提示, $【{fontsOnAssets[i]}】的替代字体为空, 确定);}}}if (ReplaceGo.Count 0){EditorUtility.DisplayDialog(提示, 没有需要替换的对象, 确定);}else{string hintInfo ;foreach (var font in Dic_Font_ReplaceFont){hintInfo ${font.Key} {font.Value.name}\n;}if (EditorUtility.DisplayDialog(确认进行下面的替换, hintInfo, 确定, 取消)){foreach (var font in Dic_Font_ReplaceFont){ReplaceFont(Dic_Font_Prefabs[font.Key], font.Key, font.Value);}SaveChangedToAsset(prefabs);}}}#endregion#region 预制体列表InitReorderableList();if (reorderableList ! null reorderableList.count ! 0){scrollPos EditorGUILayout.BeginScrollView(scrollPos);reorderableList.DoLayoutList();EditorGUILayout.EndScrollView();}else{EditorGUILayout.LabelField(提示没有需要替换字体的预制体);}#endregion}#region 列表和滚动窗口ReorderableList reorderableList;//列表显示Vector2 scrollPos;//滚动窗口需要private void DrawHeader(Rect rect){EditorGUI.LabelField(rect, 对象列表数量 prefabs.Count);}private void DrawElement(Rect rect, int index, bool isActive, bool isFocused){rect.height - 4;rect.y 2;prefabs[index] (GameObject)EditorGUI.ObjectField(rect, 包含Text的对象, prefabs[index], typeof(GameObject), true);}private void AddItem(ReorderableList list){prefabs.Add(null);}#endregion#region 逻辑方法/// summary/// 字体相关初始化/// /summaryprivate void InitFont(){textPaidFontRelpace.Clear();textReplaceFonts.Clear();fontsOnAssets FindAllFonts();foreach (var item in fontsOnAssets){textPaidFontRelpace.Add(false);textReplaceFonts.Add(null);}}/// summary/// 预制体相关初始化/// /summaryprivate void InitPrefabs(){prefabs GetAllPrefabByAssetDatabase();prefabs FilterNoTextPrefabs();prefabs.Clear();foreach (var item in Dic_Font_Prefabs){prefabs.AddRange(item.Value);}}/// summary/// 初始化链表操作对象/// /summaryprivate void InitReorderableList(){prefabs prefabs.Distinct().ToList();reorderableList new ReorderableList(prefabs, typeof(GameObject), true, true, true, true);reorderableList.drawHeaderCallback DrawHeader;reorderableList.drawElementCallback DrawElement;reorderableList.onAddCallback AddItem;}#endregion#region 功能方法#region 查找和过滤/// summary/// 找到工程和场景中的含有Text组件的对象/// /summary/// param namepath/param/// returns/returnsprivate ListGameObject GetAllPrefabByAssetDatabase(params string[] path){ListGameObject _prefabList new ListGameObject();string[] _guids AssetDatabase.FindAssets(t:Prefab, path);string _prefabPath ;GameObject _prefab;foreach (var _guid in _guids){_prefabPath AssetDatabase.GUIDToAssetPath(_guid);_prefab AssetDatabase.LoadAssetAtPath(_prefabPath, typeof(GameObject)) as GameObject;_prefabList.Add(_prefab);} #if UNITY_2020_1_OR_NEWERText[] texts GameObject.FindObjectsOfTypeText(true);foreach (var text in texts){_prefabList.Add(text.gameObject);} #elseScene activeScene EditorSceneManager.GetActiveScene();GameObject[] allObjectsInScene activeScene.GetRootGameObjects();foreach (var obj in allObjectsInScene){Text[] texts obj.GetComponentsInChildrenText(true);foreach (var text in texts){_prefabList.Add(text.gameObject);}} #endifreturn _prefabList;}/// summary/// 过滤没有包含Text的预制体/// 过滤没有包含付费字体的预制体/// 根据Text类型分类/// /summary/// param namegameObjects/param/// returns/returnsprivate ListGameObject FilterNoTextPrefabs(){ListGameObject templist new ListGameObject();Dic_Font_Prefabs.Clear();foreach (var prefab in prefabs){Text[] texts prefab.GetComponentsInChildrenText(true);if (texts.Length ! 0){foreach (var text in texts){if (text.font ! null){if (!Dic_Font_Prefabs.ContainsKey(text.font.name)){Dic_Font_Prefabs.Add(text.font.name, new ListGameObject());//根据Font类型添加一个Text集合到字典中}if (!Dic_Font_Prefabs[text.font.name].Contains(prefab)){Dic_Font_Prefabs[text.font.name].Add(prefab);}if (!templist.Contains(prefab)){templist.Add(prefab);//包含该Text的预制体添加到集合中}}}}}return templist;}/// summary/// 找到工程中的所有字体文件/// /summary/// returns返回字体名称列表/returnsprivate Liststring FindAllFonts(){Liststring list new Liststring();// 获取所有字体文件string[] fontGUIDs AssetDatabase.FindAssets(t:Font);foreach (string fontGUID in fontGUIDs){string fontPath AssetDatabase.GUIDToAssetPath(fontGUID);Font font AssetDatabase.LoadAssetAtPathFont(fontPath);list.Add(font.name);}list.Add(Arial);//默认字体添加进去return list;}#endregion#region 替换字体方法/// summary/// 替换Text的字体/// /summary/// param nametexts要替换的Text集合/param/// param namefontName要替换的字体的名字/param/// param namefont用来替换的字体/paramprivate void ReplaceFont(ListGameObject gameObjects, string fontName, Font font){foreach (var go in gameObjects){Text[] texts go.GetComponentsInChildrenText(true);foreach (var text in texts){if (text.font ! null){if (text.font.name fontName){text.font font;}}//else//{// text.font Resources.GetBuiltinResourceFont(Arial.ttf);//}}}}/// summary/// 保存更改/// /summary/// param namegameObjects/paramprivate void SaveChangedToAsset(ListGameObject gameObjects){foreach (var gameObject in gameObjects){EditorUtility.SetDirty(gameObject);}AssetDatabase.SaveAssets();AssetDatabase.Refresh();EditorUtility.DisplayDialog(提示, 替换完毕, 确定);}#endregionprivate ListGameObject GetUseFontPrefabs(string font){if (Dic_Font_Prefabs.ContainsKey(font))return Dic_Font_Prefabs[font];elsereturn null;}private int GetGetUseFontPrefabCount(string font){ListGameObject temp GetUseFontPrefabs(font);return temp null ? 0 : temp.Count;}#endregion }
http://www.zqtcl.cn/news/843820/

相关文章:

  • 北京企业网站建设电话长沙建设工程信息网
  • 大型综合门户网站开发扁平化个人网站
  • 怎么做代理人金沙网站长沙 网站运营
  • 商城网站开发的目的和意义鲜花类网站建设策划书范文
  • 什么类型的公司需要做建设网站的iis7 网站权限设置
  • 信誉好的商城网站建设火车头 wordpress 发布
  • 龙岩做网站抚顺 网站建设
  • wordpress怎么设置广告位青州网站优化
  • 网站的备案编号高端网站建设谷美
  • 佛山智能网站建设地址设计资溪做面包招聘的网站
  • 荆州网站建设多少钱国外网站设计理念
  • 网站备案成功后wordpress文字加框
  • 中小企业怎么优化网站西安网站建设求职简历
  • 网站开发者模式怎么打开商城网站建设特点有哪些
  • 网站登录按纽是灰色的做网站的前途怎么样
  • 常州城乡建设局网站霸榜seo
  • 网站响应样式如何制作自己的公众号
  • 网站的友情连接怎么做免费收录链接网
  • 太原网站设计排名wordpress 设置语言
  • 南京模板建站定制网站网站单页面怎么做的
  • 宁夏住房建设厅网站石家庄最新今天消息
  • 写网站软件tomcat部署wordpress
  • 怎么做下载网站吗分析一个网站
  • 网站建设禁止谷歌收录的办法做挂网站
  • 佛山优化网站公司做购物网站需要多少钱
  • 山东网站建设维护营销型网站是什么样的
  • 长沙营销网站建设苏州风险区域最新
  • 个人网站百度推广收费wordpress发邮件慢
  • 三门峡网站设计wordpress 去掉功能
  • 网站小程序开发公司wordpress 用户授权