Unity学习笔记(16)——可编程对象的自定义UI

今天算是这么多天以来遇到的第一个大的瓶颈:之前的纯UI游戏最后一个课时确实没什么有价值的内容,就没有继续学了,一时半会儿又找不到新得学习内容,在电脑前足足发呆坐了一个多小时。晃过神来,接着看UI里的课程吧,这次是第五个系列:Customising UI with Scriptable Objects,使用可编程脚本的对象来自定义UI。这次的课程总共只有六节,但相比于之前跳跃还是比较大的,难度也被标为了中级,尽量尝试理解吧

1.第一节简单介绍了教程所要实现的功能:在一个大的UI框架下控制UI的风格,改变某一个UI元素,使得所有类似的元素都能应用这个修改。单纯这么说的话,用Prefab的方式应该也能实现。除此以外,想要单独修改某个UI元素的时候,又可以不受别人的影响。这一点应该就是和Prefab比较不同之处了。

2.第二节上来就是全新的知识点,创建了一个不是继承MonoBehaviour类的FlexibleUIData类,继承的是ScriptableObject类,目前还不知道继承这个类能有什么特性。然后又有一个新的语句,[CreateAssetMenu(menuName ="Flexible UI Data")],保存脚本后,在Project窗口中右键创建,能看到一个新的Flexible UI Data选项了,看了一下,拓展名是assets

3.接下来,创建了一个新的脚本FlexibleUI,先声明了一个FlexibleUIData类的skinData变量,然后声明了一个protected virtual void的OnSkinUI函数,并且在Virtual Awake函数中调用了它(完全不明白是做什么用的)。倒是又学了一个看得懂的语句[ExecuteInEditMode()],表示在编辑模式下脚本就会运行。这条语句应该主要是被用来处理类似于这个教程的,编辑框架的脚本吧。如果这样理解的话,这些virtual标识符应该和它是对应的,这样就能说通了。

4.第三节创建了一个继承FlexibleUI类的FlexibleUIButton类,又有一个新的语句[RequireComponent(typeof(Image))],表示带着这个脚本的物体,必须要有一个Image的组件。创建了一个空的物体并且加上了这个脚本后,果然自动添加了Image和Button各一个,尝试在Unity中移除,但被脚本禁止了。

5.接下来在FlexibleUIButton脚本中写了一个protected override void OnSkinUI()函数,看起来是可以覆盖基类中的同名函数的,而其中的语句……现在还完全不能理解,暂且跳过吧。经过一通看不懂的操作以后,新创建的Button,全部都会跟随Default Skin设置来改变形态了,没学到方法倒是学了一些周边的东西,诸如编辑模式下运行脚本、创建新的Assets类型、还有强制添加组件等等。

第二段方法看不懂,第三段逻辑不理解

6.第四节,看了个似懂非懂,其中学到的就是添加枚举类型:public enum Type。配合声明一个Type类型的变量的情况下,可以很方便的给这个变量赋值。再配合类型里用switch方式处理,可以很方便的完成成套的设置。至于教程核心的设置按钮样式,权当了解吧。

7.第五节,讲了如何自定义右键的菜单,使得直接创建就能有想要的物体。同样仅作为了解吧,目前实际意义比较有限。

8.第六节的QA部分,又学了一个周边的语句[Header("要显示的文字")],可以用来设置Inspector中的层级,使得编辑的过程更加一目了然


今天的教程也做了不少笔记,但对于教程中的核心内容不是很理解,提升很有限,算是踩了个坑。反倒是一些周边的知识点更有帮助。以后在学之前还是得好好考虑一下进度和难度,选择合适一些的课程,尽量减少浪费时间。

2018.11.5 0:51

推荐阅读更多精彩内容