UNITY WWISE (一)从一个按钮开始

今日痛改需求表
明日埋骨制作人
程序不狂非好汉
血染策划义当头
大家好 我是腿毛打结

世界不断在迭代 包括快餐盒饭
V1.0 一盒子饭装的盖饭,盒子可能被撑破
V2.0 盒子的格子变多了,密闭性也提升了,菜和饭被分开了
V3.0 盒子变多了,2-4个盒子 有方有圆 主菜、辅菜、汤、水果。包装一体化的纸壳将几个菜盒包成一体化。上面还印了一些扎心的文字 :“在忙也要吃饭!吃饱了才有力气工作。努力生活!加油!“

当别人都下班了,你还一个人默默的加班饿着肚子没吃饭,看到这句话时顿生感动,含泪吃盒饭。(为啥说盒饭呢,当年一个人在北京漂,在校园用餐盘吃饭,加班用盒子吃饭,像田老师,成都小吃之类的无论你点什么盖饭也都是用盘子吃饭,有一天女朋友请我去她家吃饭,她妈妈做了一桌好菜 面前一副碗筷,莫名其妙的感动,差点流泪。因为太久没用碗吃饭了。。。。)

游戏也一样,核心玩法没变。UI简洁了,美术精细了,音效不吵了。操作优化了,战斗时间变短,打怪的快感增强了,啰嗦的逻辑简洁了。

01
导入第一个.WAV音频文件

今天继续Wwise。打开Wwise,大家把眼角的眼屎擦掉吧 我们开始了。

目光先看这里。ProjectExplorer窗口。找一个音频文件 .wav格式的,将声音直接拖到 Actor-Mixer Hierarchy 目录下。

弹出 Wwise 会弹出 Audio File Importer 窗口,点击Import按钮 导入就算完成了。

再看一下ProjectExplorer窗口 蓝色的UI——Skillup就是刚刚导入的音频文件。


02
创建第一个Event

在上面导入的声音文件右击 --->New Event ---> Play
Wwise会弹出一个窗口,长下面这样。

看起来很高级对不对。欣赏一下乐呵乐呵关掉可以了,我们要去下一个景点了各位老铁系好安全带。

眼屎看回Project Explorer窗口 选择Events标签页

看到我们刚刚新创建Play_UI_Skillup了

修改一下文件夹名称,再把Play_UI_Skillup拖进来。

然后把整个文件夹拖到 SoundBank Editor--->Add 标签下

最后一步SoundBank Manager窗口中的 选中我们的Default Work Unit 点击Generate Selected 按钮

完成

  1. wav音源导入
  2. wav到Event
  3. 将Events添加到Bank
  4. 导出Bank

03
第一次在Unity中调用Event

打开Unity 看看有没有发生变化

发现刚刚打好bank已经出现在Wwise Picker窗口中了 如果没有出现 点击一下 Refresh Project按钮
现在我们创建两个Button 分别把两个Play_Btn_Click 和 Play_UI_Skillup Event 拖到两个按钮上

Listener记得要选 默认的listener在Main Camera上
如果后面你有很多listener 比方说 UI上的 场景上的 角色上的

在AkAmbient上 TriggerOn 是可以多选的。现在可以运行一下 记得戴上耳机。
你会发现游戏启动后能分别听到两个生意 但是点击这两个按钮并没有效果。但是在Inspector窗口中点击Play按钮是有声音的。

下面我们要尝试一下怎么能在点击场景中的按钮同时分别播放按钮背后的声音。

现在试一下Trigger On:选择 AkTriggerMouseUp

如果这样也没有声音。很正常。说明按钮控件上没有碰撞。当然每个控件都放一个RigiBady是非常浪费的。那我们就换个方法。因为我们是码农。所以没什么是代码做不到的。
还记不记得我们前面讲UGUI Button的时候讲过一个
Unity UGUI 自定义监听事件函数
里面有个BtnAddListener 类 现在我们将它改造一点点 让它被点击时播放声音。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BtnAddListener : MonoBehaviour 
{
    [SerializeField]
    private Button m_button;

    [SerializeField]
    private AkAmbient m_btnAkEvent;
    // Start is called before the first frame update
    void Start()
    {
        m_button.onClick.AddListener(OnClickButton);
        m_btnAkEvent = GetComponent<AkAmbient>();
        //m_btnAkEvent.actionOnEventType = AkActionOnEventType.AkActionOnEventType_Pause;   
    }

    public void OnClickButton()
    {
        Debug.Log("Button is clicked");  
        // 这里就是播放声音的代码 实际上是把Event派发出去 让Wwise响应这个Event   
        m_btnAkEvent.data.Post(m_btnAkEvent.gameObject);       
    }    
}

把BtnAddListener 分别添加到两个按钮上 现在再运行一下吧
发现声音可以随着按钮的按下自由播放了。

明天是周末。祝大家不加班,不改需求,不开茶话会。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容