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

网站制作设计说明长春网络有限公司

网站制作设计说明,长春网络有限公司,学校网站开发方案,海口h5公司前言 在开发UI滚动列表的时候#xff0c;经常会有每项的背景图不统一的情况#xff0c;会间隔重复的情况居多。这种情况下#xff0c;手动去设置间隔一行的背景图或者颜色是比较麻烦的。在此背景下#xff0c;笔者尝试写个小工具#xff0c;在搭建UI时配置一下循环背景的…前言 在开发UI滚动列表的时候经常会有每项的背景图不统一的情况会间隔重复的情况居多。这种情况下手动去设置间隔一行的背景图或者颜色是比较麻烦的。在此背景下笔者尝试写个小工具在搭建UI时配置一下循环背景的样式可以通过一键点击后设置UI背景的样式省去繁琐的过程如果多个列表的样式更改也提供全局的一键设置背景设置按钮。同时提供了动态设置的接口方便在动态请求数据的时候设置背景样式。 效果 一键全局设置 单独设置 实现过程 其核心思路是对UI的image组件的颜色和图片进行修改配置的样式为数组的形式通过循环的方式遍历每个子节点和配置的样式循环滚动的设置。至于Unity3d的编辑器扩展则是在Editor文件夹下继承Editor类通过GUILayout.Button新增设置背景的按钮。[MenuItem(0)]来新增菜单的设置按钮。本工程是基于Unity3d 2020.3.28f1c1个人版本实现其它版本可能会有不兼容情况请慎重使用。 UI搭建 UI的搭建也是常规的Scroll Rect组件、Text和图片等组件构成。只不过需要注意的是设置的背景图的额节点是兄弟节点这个规则也可以按需要自行修改规则和代码。 编辑器扩展 单独设置的按钮 这里是每个配置项的Inspector中可以单独进行点击通过编写脚本的Editor的OnInspectorGUI函数进行实现 public override void OnInspectorGUI(){DrawDefaultInspector();SetItemBGMgr bgMgr (SetItemBGMgr)target;if (GUILayout.Button(设置子节点背景样式,new GUILayoutOption[] { GUILayout.ExpandWidth(false) })){bgMgr.SetItemChildrenBG();}}一键全局设置 通过判断UNITY_EDITOR编辑器下才生效否则打包会报错。通过MenuItem新增一个菜单选项并设置了快捷键Shift B #if UNITY_EDITOR[MenuItem(设置子节点背景/刷新所有 #b, false, 1000)] #endifpublic static void RefreshAllItemBG(){Debug.Log(刷新所有背景); /* SetItemBGMgr[] sim Transform.root..SetItemBGMgr(true);for (int i 0; i sim.Length; i)sim[i].SendMessage(SetItemChildrenBG);*/instance?.BroadcastMessage(SetItemChildrenBG);}这里的一键全局设置功能有一些需要说明一下的点由于使用了BroadcastMessage函数来广播消息所以SetAllBGMgr需要挂在跟节点上这样才能将消息广播到各个节点。还有一点是如果被设置的UI是active为false的状态时是不会进行刷新的因为它收不到广播的消息。后续会看这个问题有没有优化空间。 样式功能 样式的配置如图 主要是图片和颜色的数组默认是设置图片的数组如果需要图片颜色的模式需要勾选IsSpAndCol选项。 配置参数的代码如下 [Header(背景图片(优先生效))]public Sprite[] sprites;[Header(背景颜色)][Tooltip(优先级低于图片IsSpAndCol时也生效注意颜色数量和图片数量得一致)]public Color32[] colors;[Header(图片和颜色都生效)][Tooltip(注意颜色数量和图片数量得一致)]public bool IsSpAndCol false;脚本在收到广播SetItemChildrenBG消息的时候会进行样式的刷新 for (int i 0; i transform.childCount; i){Image TempImg transform.GetChild(i).GetComponentImage();if (TempImg){if (!TempImg.gameObject.activeSelf)continue;if (sprites ! null sprites.Length 0){TempImg.sprite sprites[idx];if (IsSpAndCol) {if (colors ! null colors.Length 0 idx colors.Length){TempImg.color colors[idx];}else{Debug.LogWarning(设置背景样式失败,请检查[ transform.name ]的背景颜色配置);}}idx (idx (sprites.Length - 1)) ? 0 : idx1;}else if (colors ! null colors.Length 0){TempImg.color colors[idx];idx (idx(colors.Length -1))?0:idx;}else{Debug.LogWarning(设置背景样式失败,请检查[ transform.name]的背景图片/颜色配置);}}else {Debug.LogWarning(transform.GetChild(i).name 设置背景样式失败,请检查其是否有Image组件);}}如果动态请求数据如请求api的数据进行刷新UI时等子节点全部创建而且数据全部刷新完成后代码中调用一次即可 SetItemChildrenBG();由于这里的样式需求是在预先搭建UI和动态请求数据刷新的情况而且有active为false的情况下全局无效的情况。如果为了确保设置的样式肯定会生效可以尝试在Start()函数中刷新一遍样式 void Start(){SetItemChildrenBG();}源码工程 https://download.csdn.net/download/qq_33789001/88644030 无法打开说明审核未通过。
http://www.hkea.cn/news/14543017/

相关文章:

  • h5做的公司网站汕头市做网站优化
  • 济源做网站的公司网站建设与管理 自考
  • 残疾人信息无障碍网站建设做外贸需要用什么网站
  • 网站首页是什么意思python编程软件安装教程
  • 做家政有专门的网站吗网站都是每年续费的吗
  • 网站域名重定向广元建设机械网站
  • 怎么自己设计网站wordpress用户调用
  • 西安 网站建设 费用网站平台建设费用
  • 怎么在360做网站松江手机网站建设
  • 网站做友链有行业要求吗搭建网站费用是多少
  • 网站建设html定制网站建设公司哪家便宜
  • 可以做科学模拟实验的网站app开发与网站开发
  • 网站优化千牛帮wordpress 电子商务主题
  • 如何把电脑改成服务器做网站2015年网页游戏排行榜
  • 没有虚拟主机怎么建网站游戏的网站
  • asp网站开发需要什么flex做的网站
  • 网站开发搜索功能网站模板下载湖南岚鸿网站
  • 漳州手机网站建设公司哪家好宜兴开发区人才网
  • 做彩票网站用什么服务器网站开发的费用属于什么科目
  • wordpress建立商城优化20条措施
  • 营销网站售后调查网站防火墙咋样建设
  • 在工行网站上如何做现金理财wordpress 备案号插件
  • 做网站推广的工资学网页制作的好处
  • wordpress live-2d汉口网站优化
  • 基层建设检索网站网站数据库是干什么的
  • 网站设计手机网站开发流程中客户的任务是什么
  • 自媒体wordpress主题河北seo
  • 如何做简单的网站 域名邮箱上海市住房城乡建设部网站
  • 西安网站建设联系电话做县城门户网站
  • 哪里培训做网站找做废薄膜网站