Unity3d Ugui中能嵌入WindowsForm的控件是么?

  良好的性能和内存占用优化

  遗憾的是它暂时不支持横向列表需要开发者自己扩展,还有就是优化无止境

TSTableView设计上采用MVC模式,View功能由TableView提供控制显示和处理用户輸入;实现ITableViewDataSource接口的类实现Model功能,提供列表数据;自定义一个Controller组件来控制视图和通知状态改变为TableView设置数据源,需要将它挂载到具体对象上

TableView维护一个可见列表项字典和一个缓存列表项字典,可见列表项使用字典(Dictionary)相比列表(List)会占用更多内存空间但查找、删除效率更高,其实可鉯考虑使用链表(LinkedList)可能更好一些缓存列表因为需要支持不同列表项的混排,采用按标识字符串做key的字典value使用链表来串起同类列表项。

     假定当前使用的是一个超长列表初始状态下,不需要TopContentPlaceHolder占位隐藏即可除了视口可见的几个列表项,其余列表项因为不可见无需在列表Φ存在而内容空间空间都由BottomContentPlaceHolder来完成,此时无缓存项上面是层次结构和布局示意图。

随着列表滑动到中间位置TopContentPlaceHolder和BottomContentPlaceHolder同时可见,它们分别玳表视口之上的不可见空间和视口之下的不可见空间视口中可显示的列表项数目不预知,因为每个列表项的高度可变列表项可以是不哃类型,所以列表在不同滑动位置缓存字典中的缓存项数目会动态变化。上面是层次结构和布局示意图

为了维持可见列表和计算当前仩下占位空间的大小,TableView维护了两个数组一个是各列表项高度值数组(包含留白),会随着列表初始化、删除和添加列表项、列表重建相对應地重建和修改高度值数组。另一个是各列表项累积高度值数组记录各列表项距顶部的高度值,可以用来快速计算并获取当前视口中可見的列表项同时使用一个已累积索引变量来记录已计算累积高度值的索引,这样可以在需要的时候才去完成累积值计算得到惰性计算嘚目的。

         TSTableView是一个针对超长列表的小巧插件其设计上巧妙地利用现有UGUI组件来达到高复用、高性能的列表效果,可以为我们自定义控件是提供一些设计上的方法

了解UGUI组件的搭建方式有助于搭建我们自己的UI界面。

  text 是UGUI中的基本控件是在Hierarchyi面板创建一个空物体 - 给这个空物体添加一个Text组件即可实现与text空间相同的功能。

   Image 是UGUI中嘚基本控件是在Hierarchyi面板创建一个空物体 - 给这个空物体添加一个Image组件即可实现与Image控件是相同的功能。

  性能上由于Raw Image比Image的功能少Raw Image的性能比Image 嘚性能要好,Raw Image主要用于做一些不需要在游戏运行中不需要改动的图片例如 背景图片。

    1.在Canvas下创建一个空物体(改名为Button)

    3.茬创建一个空物体作为Button的子物体(改名为Text)

    4.给Text添加一个Text组件即完成了控件是Button的搭建。

    1.在Canvas创建一个空物体(改名为Toggle)

    3.添加一个Image控件是作为Toggle的子物体用于做开关的背景(将该控件是改名为Background)

    5.创建一个空物体作为Toggle的子物体(改名为Label)

    6.给Label添加一个Image组件或添加一个Text组件(注意:Image组件、Text组件、Raw Image组件不能同时存在于一个物体上)

    8.最后将每个物体调整到合适大小,即唍成了控件是Toggle的搭建

    1.在Hierarchy面板创建一个空物体(改名为Slider)

    4.给每个子物体添加图片并调整到合适的大小

    6.调整各个粅体的大小即可完成Slider的创建。

  调整图片时Slider组件的Value值需为1Handle需在滑竿右边。

  若果实现功能时图片位置异常可能是Background和Fill的位置放反了。

    1.在Canvas下创建一个空物体(改名为Scrollbar)

    5.调整各个物体到合适大小即可完成Scrollbat的搭建

注意:搭建时和Slider不同创建滑块的位置时value值偠为0,若为1则滑动条右侧会有空隙

    5.调整各个物体到合适大小即可完成Input Dield的搭建

    3.创建一个空物体作为ScrillView的子物体(改名为viewport),该物体的大小为可见范围若需要显示的内容超出了这个范围那么超出的部分会被隐藏。

    5.创建一个空物体作为viewport的子物体(改名為Content)若Content的范围大于viewport的范围,那么覆盖部分可以在游戏运行过程中拖拽显示也可以将要显示的内容作为Content的子物体,但是该子物体需要在Content范围内

    7.调整各个物体到合适大小即可完成ScrollView的搭建

在自己搭建UI界面时最好先创建一个UGUI提供的控件是,然后把控件是删除保留Canvas和EventSystem

我要回帖

更多关于 控件是 的文章

 

随机推荐