Unity开发日记【第八天】——音效与对话框

目录

一、音效的实现

二、对话框的实现


一、音效的实现

声音是一个游戏必不可少的元素,现在开始尝试给游戏加入一些音效,这里面设计三个组件,分别是Audio Listener(接收)、Audio Source(发送)、Audio Clips(具体的声音片段),我们可以在主相机上固定有一个Audio Listener,通常情况下也只需要这一个。首先在资源商店找到自己喜欢的背景音乐和音效导入进来,然后我们尝试导入背景音乐。首先给Player添加我们提到的Audio Source的组件

这里的添加的组件为什么是蓝色的,是什么意思?其实很好理解,我们把player变成了预制这个组件是预制后加入的也就是预制里面是没有的所以会有蓝色,所以我们如果希望这是一个临时组件那么就这样,如果我们要添加到预制里面

我们只需要点击右上角的覆盖,然后应用所有就自动保存了

这里可以看见有一个AudioClip,将我们选好的声音片段拖进去就好了。

 但是为了可以正常或更好的使用我们还需要一些调整比如音量或者循环播放。

接下来我们假设要添加一个怪物死亡时的音效,首先和之前一样创建一个Audio Soure组件然后把选好的音效加进去

 注意,一定要取消下面的勾要不然会在游戏一启动的时候就播放这个音效

 那么我们如何控制这个音效何时播放呢?当然是写代码了,但是这里注意我们每个怪物的死亡效果和音效是一样的我们是在父类中实现的,所以这个死亡音效也应该在父类中实现

   protected AudioSource DeathAudio; //死亡音效

   protected virtual void Start()
    {
        DeathAudio = GetComponent<AudioSource>();
    }
     
    public void Death()
    {
        DeathAudio.Play();
        Destroy(gameObject);
    }

代码很简单,声明、初始化、调用就完成了,至此死亡的声音已经加入了,同样的方法我们可以添加跳跃或者下落的动画等,这里就不再赘述。

二、对话框的实现

对话框是用来引导剧情的重要组成部分,这部分我们尝试实现一下简单的对话框,首先我们的想法是在第一关的末尾的地方加上一个按E进入的一个对话框,可以引导玩家进入第二关

在制作UI的时候我们新建了一个画布,此时我们在这个画布上新建一个UI > 面板(panel),这个面板是布满整个画面的,可以改变它的颜色,同样我们用之前锁定的方法来确定UI的位置,调节好数值

 最后设置好就是这样的,我们希望玩家在来到关尾的时候会触发这个对话框

为了让这个UI上有文字,所以我们要创建这个对话框的子物体(UI > Text),然后写好字体后调整大小和位置,和其他资源一样字体也是可以在资源商店找到自己喜欢的然后更改。同样对话框也可以修改,最后的效果图:

为了可以实现触发的效果,我们需要在对应的位置加上一个触发器,这里我使用了方形碰撞器,添加到了背景图上,然后添加一段新代码。

代码如下:【注意这里需要把玩家的tag修改为Player才可以触发下面的代码】

using UnityEngine;

public class EnterDialog : MonoBehaviour
{
    public GameObject enterDialog;

    private void OnTriggerEnter2D(Collider2D collision) //对话框弹出
    {
        if(collision.tag == "Player")
        {
            enterDialog.SetActive(true);
        }
    }

    private void OnTriggerExit2D(Collider2D collision) //对话框消失
    {
        if (collision.tag == "Player")
        {
            enterDialog.SetActive(false);
        }
    }
}

然后需要默认关闭EnterDialog

 

然后保存代码测试运行

这里我们希望为各种对话框添加一个渐入的动画,但是我们没有这个动画,这里我们需要新的功能。首先在一个合适的路径创建一个动画,然后拖拽到UI:EnterDialog上,这样会自行创建一个动画控制器,这样我们就可以自行制作动画了但是我们此时没有图片,所以我们需要录制

 点击后,我们先修改透明度让文字和对话框消失,然后我们发现它自己记录了一个关键帧

 然后在经过任意时间后(把时间轴放在自己想要的地方)恢复透明度,然后关闭录制,我们就完成了一个渐入的动画

至此我们就完成了第一关游戏场景的搭建,我们可以用之前的整个过程搭建更多的游戏场景!

猜你喜欢

转载自blog.csdn.net/qq_50688324/article/details/127029712