Unity2D学习记录第九期
一、视觉差Parallax
实际上这是一种概念性的东西并不是什么特别的编程名词之类的,这种称之为视觉差的东西广泛应用于2D游戏中它可以让你的游戏看起来有3D的景深,尽管实际上本来就是3D的场景而且很多2D游戏实际上确实是3渲2的,但不论如何这里重要的是概念
实际上要看出3D的景深大致在两点上下功夫,一个是图层一个是视觉差,图层之前介绍过了,比如从一个山洞里出来,分三个图层,洞穴外层,玩家和洞穴内层,稍微有一个错位就有这样的效果了。回到视觉差,他也是在图层上下功夫,但不是图层的位置,而是图层的移动,比如你在移动的时候让背景跟随的慢一点。具体的效果我不知道怎么放gif你可以网上自己查查看。
这里给出代码先:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Parallax : MonoBehaviour
{
public Transform Cam;
public float moveRate;
private float startPointX,startPointY;
public bool lockY;
// Start is called before the first frame update
void Start()
{
startPointX = transform.position.x;
}
// Update is called once per frame
void Update()
{
if(lockY)
transform.position = new Vector2(startPointX+Cam.position.x*moveRate,transform.position.y);
else{
transform.position = new Vector2(startPointX+Cam.position.x*moveRate,startPointY+Cam.position.y*moveRate);
}
}
}
代码很简单,实际上就是上述所说的让背景跟随的慢一点,但是效果真的很棒,所以这里单独拎出来讲讲,顺便说一下这里也考虑到了是否需要Y轴移动的情况。
二、开始菜单,暂停菜单
这两是啥我觉得就不用介绍了,玩过游戏的人都知道是什么
这里直接讲怎么做
老样子,用UI组件
Canvas
+Panel:BackGround
+Panel:MainMenu
+GameObject:UI
++Button:Play
++Button:Quit
++Text:Title
先来介绍一下Button,下述的text就不讲了之前有说过
这里有很多很多颜色选项,其实根据名称也可以才出来,可以看出来功能那确实很丰富啊,这里重点是下面这个on click函数,这是在按钮按下的时候会触发的代码。
说实话有点麻烦,需要拖进含有代码的对象然后选取对象中的函数,而且以为显示的是所有的函数,所以非常多,提醒一下最下面才是自定义的函数。
现在来一道附加题:如何做出场景的渐变效果后出现按钮和标题那
这里就给个思路
渐变–>动画录制
出现–>激活启用
好的,那么现在来聊暂停菜单
这里除了这条slider别的我就不细说了,之说一个事情,就是怎么"the world!"
好吧,就是怎么暂停游戏
Time.timeScale = 0f;
把游戏的单位运行时间变为0就彻底停止了,聪明的小伙伴会想到了,这东西可以做子弹时间什么的。
好的,回到这个slider,slider也有很多参数比较好理解,和button一样他也有滑动时调用的函数,这里假设是调节声音的滑动条
在项目文件中创建一个audiomixer,这可以理解为是一个混音器用于调节声音的,我们会用它来作为声音的总输出并且作为调节声音大小的工具台,但是这个工具台他不能外挂文本也不能实例化变量,所以只能对他做一些操作来让它的参数序列化变得可编程
对要释放出来的变量右键有个带expose的选项点击即可,在audiomixer的编辑界面右上角会有expose出来的变量的列表就可以顺便改个名字了,比如我改成了MainVolume
在canvas下挂载的脚本处添加上这些代码:
using UnityEngine.Audio;
public AudioMixer audioMixer;
public void SetVolume(float value){
audioMixer.SetFloat("MainVolume",value);
}
把创建的audiomixer拖到canvas脚本组件中,这样就可以调节参数了,但这里有一个很关键的细节
我们可以看到有两个setVolume这两有什么区别嘛。答案当然是有的,下面的意味着是用固定的在组件中输入的参数,而上面用的是滑动条的value也就是滑动条滑动到哪里了,那才是我们想要的结果。
可能有些人会纠结为什么不用指定输入,这里其实有点绕,我们理一下思路。首先这是on value change函数,在slider滑动时调用的,是依附在value下的,以为value是float类型,所以会有一个动态float函数选项出现,自然指定的就是slider的value,而如果是别的类型比如函数输入是string类型就不会出现这个选项了
三、声音管理,导出
如果你嫌弃player身上挂载的音效多的话可以做一个musicManager对象来调用这些音效。
用audioClip来获取各种音效
导出吧,诸君,结束了。
四、完结撒花
这个系列结束了,感谢各位读者的陪伴。我在这之后也会更新unity的博客来继续记录我的学习历程,也会专门有一个番外篇来记录一些我学到的一些无关最核心功能的小技巧或者小东西。欢迎各位看官关注我,各位晚些时候见了