Unity学习笔记(13)

完成了UI教程的7~11,要点如下:

1.UI Slider教程中,比较特殊的是OnValueChanged函数,在其中选择的对象,只能改变Dynamic Float或者Static Parameters,试了一下,比如子弹的速度这种public float参数,不能算作Dynamic Float,不知道原因是什么。尝试在中间加一个dynamic的修饰符,但是语法错了,这里不是很理解。包括选Static Parameters的时候,也不能得到预期的效果,以后得研究一下。倒是学了一手直接给slider赋值的方法,因为可以对应到具体的数值,感觉用来做血条之类的,会比image实用一些。记得选择interactable为false,然后把handle移除

2.UI Transitions教程,看起来是直接拿的UI Button的教程来的,内容一模一样。。

3.UI ScrollRect,经常用于显示大块的图片或者文字,一屏中放不下的时候,可以拖动来显示。区别于其他UI组件,ScrollRect不能直接create,只能在inspector中Add Component,这个比较奇怪。Horizontal和Vertical决定了纵轴和横轴是否能滚动;MovemenType中Clamped是没有反弹的,Elastic是有反弹的;Inertia表示是否有惯性,以及惯性系数;最后两个ScrollBar决定了是否有滚动条

4.UI ScrollBar和UI Mask,两个教程基本没啥内容

这部分基本是把UI组件挨个介绍过去,其中有很多共性的属性和方法,不过对于UI整体的制作介绍甚少,下一个系列的Live Sessions On UI,应该会比较多这方面的介绍。今天时间比较多,马上开始吧。


开始学习第四个教程,Creating a scene selection menu,时长是49分钟

1.原来不同的关卡,在Unity中是以Scene文件(后缀名.unity)来储存的,换而言之,之前学习的SceneManager.LoadScene,正是选择关卡的关键。创建一个按钮,OnClick事件上写一个脚本包含这个函数,一个最基本的关卡选择就做完了。注意一点,里面填的参数,其实是Build Setting中的Index,或者也可以重载成之前用过的SceneName

2.紧接着,教程对这个基本的关卡选择做了一定优化:假如load的时间过长,刚才的处理方法在期间是没有任何反馈的,这样的体验很差。于是在选择界面的上层,增加了一个loading的Image和Text,并且在Inspector中设为不可见。紧接着,在脚本loadScene之前,先把这个对象设为Active,大功告成。这部分在自己尝试了以后才看教程的步骤,一模一样,还不错

3.然后,基于有时候关卡需要带着一定资源相互跳转,教程提出了一个新的Don'tDestoryOnLoad,也就是加载新场景的时候需要保留的东西。脚本也非常简单,DontDestroyOnLoad(gameObject),然后把它挂在要保留的东西上(比如背景音乐),那么这个背景音乐在加载新场景的时候,就会得到保留

被保留的资源,被单独提出来显示了

4.紧接着讲了OnLevelWasLoaded函数,也就是当关卡加载完成后执行的操作,不过Console里说过几个版本的Unity可能会把这个函数去掉,到时候应该会有新的函数来取代它的功能吧,就像之前的Application.LoadLevel改成SceneManager.LoadScene一样

5.新的一种加载场景的方式:additively,在已有的场景基础之上,新加载一个场景。照着教程写发现函数已经过时了,查了API以后,发现这里的函数也被从Application.LoadLevelAdditive改成了SceneManager.LoadScene(index, LoadSceneMode.Additive)。这里想起来比较奇怪的一点,教程里的脚本是挂在canvas上的,然后OnClick中选了对象就能拉到Canvas的函数,我怎么试都不行,所以只能把脚本挂在Button上,感觉便利性差了很多,不知道是我的操作方法问题还是Unity版本更新造成的

6.最后讲了loading条的制作,这里用了一种新的加载方式——异步加载(LoadSceneAsync)。需要声明一个AsyncOperation类的变量(private AsyncOperation async),然后通过协程的方式,在异步加载的过程中,判断是否完成了,如果没完成(!async.isDone),就把进度(async.progress)赋值给loading条。这部分因为涉及到协程,现在让我自己来写可能还是有些难度,先理解整体结构吧。

带loading条的loading脚本
完成的loading条



今天的49分钟教程,我大概花了两个半小时,学完+写完这篇笔记。收获还是很大的,加载关卡学会了,理论上可以开始制作一个游戏的雏形了。

2018.11.1 23:58

你可能感兴趣的:(Unity学习笔记(13))