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

seo与网站建设重庆工程招投标交易信息网

seo与网站建设,重庆工程招投标交易信息网,广东网站建设微信官网开发,上海住房和城乡建设部网站官网背景1#xff1a;经常会在开发中遇到策划需要改某个界面#xff0c;但是我们不知道那是什么界面#xff0c;只看到一些关键字比如圣诞活动#xff0c;那这样我就可以轻易找到这个预设了。另外还可以扩展就是收集项目中的所有中文文本然后归集到多语言表中#xff0c;然后接…背景1经常会在开发中遇到策划需要改某个界面但是我们不知道那是什么界面只看到一些关键字比如圣诞活动那这样我就可以轻易找到这个预设了。另外还可以扩展就是收集项目中的所有中文文本然后归集到多语言表中然后接入百度翻译api完成自动翻译。 背景2经常需要批处理预设却发现好多missing脚本的情况导致无法保存预设。 背景3每次自己构建的text或者image组件总是会带一个rayCasttarget true的属性如果不影响事件应该处理为false。我希望在双击进入预设和退出预设的时候对预设自动处理一些属性并保存。 背景1代码如下我写了2个接口一个是获取\uxxxx的文本内容 一个是获取Text组件上文本内容大家可以根据需要选用接口。我不打算用unity的api来做主要是想做一个外部工具用unity的工具有它的局限性。 /// summary     /// 获取text组件上的文本     /// /summary     /// param nameprefabPath/param     /// returns/returns     static string GetTextsTextFormPrefab(string prefabPath)  {      string prefabContent File.ReadAllText(prefabPath);      var listContent Regex.Matches(prefabContent, m_Text:\s*(\\u([0-9A-Fa-f]{4})));      string chinsesPattern (\\u[0-9a-fA-F]{4});      StringBuilder sb new StringBuilder(); foreach (Match collect in listContent)      {          var subCollect Regex.Matches(collect.Value, chinsesPattern);          foreach (Match sub in subCollect)          {              string pattern \\u([0-9a-fA-F]{4}); sb.Append(Regex.Replace(sub.Value, pattern, match              {                  // 将匹配到的 Unicode 转义序列转换为对应的 Unicode 字符                  string unicodeValue match.Groups[1].Value;                  int codePoint Convert.ToInt32(unicodeValue, 16);                  return char.ConvertFromUtf32(codePoint);              }));          } }      return sb.ToString();  } /// summary  /// 获取预设上的文本内容  /// /summary  /// param nameprefabPath/param  /// returns/returns  static string GetTextFromPrefab(string prefabPath)  {      string prefabContent File.ReadAllText(prefabPath); Regex regex new Regex((\\u([0-9A-Fa-f]{4})), RegexOptions.Multiline); var listContent regex.Matches(prefabContent);      string chinsesPattern (\\u[0-9a-fA-F]{4});      StringBuilder sb new StringBuilder(); foreach (Match collect in listContent)      {          var subCollect Regex.Matches(collect.Value, chinsesPattern);          foreach (Match sub in subCollect)          {              string pattern \\u([0-9a-fA-F]{4}); sb.AppendLine(Regex.Replace(sub.Value, pattern, match              {                  // 将匹配到的 Unicode 转义序列转换为对应的 Unicode 字符                  string unicodeValue match.Groups[1].Value;                  int codePoint Convert.ToInt32(unicodeValue, 16);                  return char.ConvertFromUtf32(codePoint);              }));          } }      return sb.ToString();  } 背景2代码如下 [MenuItem(Tools/EasyUseEditorTool/Remove Missing Scripts)] static void RemoveMissScriptInGame() {     GameObject[] gos Resources.FindObjectsOfTypeAllGameObject();     foreach (GameObject obj in gos)     {         var components obj.GetComponentsComponent();         for (int j 0; j components.Length; j)         {             if (components[j] null)             {                 GameObjectUtility.RemoveMonoBehavioursWithMissingScript(obj);                 break;             }         }     }     AssetDatabase.SaveAssets();     AssetDatabase.Refresh();      } 如果不移除missing的脚本批处理脚本就太难做了。 背景3代码这块代码每个项目因人而异需要特别注意多做测试。比如我们项目中一个image可能没有挂button组件或者toggle组件但是挂了自定义的mono对象内部做了事件那这种也不能去掉 rayCastTarget属性所以因项目而异。小项目简单项目可以用 using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; public class PrefabHelper  {     [InitializeOnLoadMethod]     public static void init()     {         Debug.Log(PrefabHelper.init);         PrefabStage.prefabStageClosing - OnPrefabStageClosing;         PrefabStage.prefabStageClosing OnPrefabStageClosing;     }          public static void OnPrefabStageClosing(PrefabStage ps)     {         var root ps.prefabContentsRoot;         var window root.transform.Find(Window);         if (window null)         {             window root.transform.Find(window);         }         var rawImage root.transform.Find(pingui);         if(rawImage ! null)         {             GameObject.DestroyImmediate(rawImage);         }         window.localScale Vector3.zero;          SCGTool.RemoveNoUseRayCast(root);         Object prefabObj PrefabUtility.SaveAsPrefabAsset(root, ps.assetPath,out bool success);         if(success)         {             Debug.Log(apply sucess ps.assetPath);         }         AssetDatabase.SaveAssets();         AssetDatabase.Refresh();     } } [InitializeOnLoad] public class SCGTool  { public static  void RemoveNoUseRayCast(GameObject go)  {      var tys new System.Type[]         {             typeof(Toggle),typeof(Button),         };      // 获取text或者rowImage或者image      var raws go.GetComponentsInChildrenRawImage(true);      for (int i 0; i raws.Length; i)      {          bool isAllNUll true;          foreach(var t in tys)          {                            if ( raws[i].GetComponent(t) ! null)              {                  isAllNUll false;              }          }          raws[i].raycastTarget !isAllNUll ;                   }      var images go.GetComponentsInChildrenImage(true);      for (int i 0; i images.Length; i)      {          if (images[i].GetComponentButton() null images[i].GetComponentToggle() null               images[i].GetComponentScrollRect() null images[i].GetComponentTouchMove() null)          {              images[i].raycastTarget false;          }      } var texts go.GetComponentsInChildrenText(true);      for (int i 0; i texts.Length; i)      {          texts[i].raycastTarget false;      } //然后遍历所有button对于设定了      var allButtons go.GetComponentsInChildrenButton(true); foreach (var button in allButtons)      {          if(button ! null button.targetGraphic ! null)          {              var tmpImage button.targetGraphic.GetComponentImage();              if (tmpImage ! null)              {                  tmpImage.raycastTarget true;                  continue;              }              var tmpRawImage button.targetGraphic.GetComponentRawImage();              if (tmpRawImage ! null)              {                  tmpRawImage.raycastTarget true;                  continue;              } var tmpText button.targetGraphic.GetComponentText();              if (tmpText ! null)              {                  tmpText.raycastTarget true;                  continue;              } }          else if(button !null)          {              var tmpImage button.targetGraphic.GetComponentImage();              if (tmpImage ! null)              {                  tmpImage.raycastTarget true;                  continue;              }              var tmpRawImage button.targetGraphic.GetComponentRawImage();              if (tmpRawImage ! null)              {                  tmpRawImage.raycastTarget true;                  continue;              } var tmpText button.targetGraphic.GetComponentText();              if (tmpText ! null)              {                  tmpText.raycastTarget true;                  continue;              }          }      }       EditorUtility.SetDirty(go);  } }
http://www.w-s-a.com/news/285320/

相关文章:

  • 推广网官方推广网站中国建设招聘信息网站
  • 医院网站建设需要多少钱网络营销渠道可分为哪几种
  • 怎么取网页视频网站元素计算机专业论文网站开发
  • 上海网站建设备案号怎么恢复wordpress打开页面空白
  • 30个做设计的网站企业设计网站
  • 招生网站开发的背景创意 wordpress
  • 网站备案资料查询小型企业管理系统软件
  • 温州网站建设维护怎么做好网站开发、设计
  • 佛山 做网站公司有哪些网站排名忽然不见了
  • 广告网站建设最专业东莞大朗网站设计
  • 网站做流量的论坛贴吧分销商城系统源码
  • 新手建立网站的步骤网站建设费怎么入分录
  • 哪里建网站性价比高做网站赚取广告费
  • 邢台集团网站建设价格微信怎么做捐钱的网站
  • 做网站费用需要分摊吗装修公司一般多少钱一平方
  • 公司主页的网站格式wordpress自动推送给百度
  • 网站建设辶金手指排名十二wordpress 当数据库
  • 无锡手机网站建设服务苏州展厅设计企业
  • 无锡网站制作需要多少钱北京二次感染最新消息
  • 网站开发视频播放无画面杭州房产信息网官网
  • 网站开发 改进如何创建公众号平台
  • wordpress网站响应很慢只有asp网站代码可以重新编译吗
  • 哪个网站教做饭做的好wordpress热点文章
  • 可以做推广东西的网站重庆网站建设 重庆网站制作
  • 珠海网站建设培训学校wordpress去版权 合法
  • 建设食品商购网站学校网站设计实验报告
  • 建个网站多少钱沭阳奥体小区做网站的
  • 广州视频网站建站公司php网页设计作业代码
  • 成都公司网站设计如何制作网址最简单的方法
  • 温州 做网站福建住房城乡建设部网站