WwiseUnity接入

Unity使用Wwise实现音效

首先使用Wwise Launcher 将Wwise集成到项目中
在集成的时候无法识别中国版的Unity 必须要翻墙下载国外版的Unity
但这并不意味着必须要使用国外版的Unity进行项目开发,只需要在集成的时候使用与项目开发所使用的Unity版本相同的国外版的Unity进行集成即可,以本人所做的项目为例,使用的是Unity2020.3.11f1c1,本人在集成的时候所使用的是2020.3.11f1版本,之后继续使用f1c1版本进行项目开发,并没有出现错误

通过此选项来进行集成
在这里插入图片描述

此处所选的Unity版本不能是f1c1版本

在Unity中使用Wwise播放音效有两种实现方式

  1. 第一种方式是直接通过挂载脚本进行加载Bank文件,然后通过AkEvent来加载Event的方式进行播放
    此种方式简单暴力,但是不宜维护,如果是多个Event进行播放则脚本管理起来比较麻烦,如下图所示
    在这里插入图片描述
    在这里插入图片描述
  2. 第二种方式则是使用脚本进行注册和加载,本人采用的是此种方式进行加载
        const float minRTPCValue = 0f;
        const float maxRTPCValue = 100f;

        GameObject globalGameObject;

        public void Init()
        {
            globalGameObject = new GameObject("Global Audio");
            GameObject.DontDestroyOnLoad(globalGameObject);
            AkSoundEngine.RegisterGameObj(globalGameObject, globalGameObject.name);
        }

        public void LoadBank(string name)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl LoadBank name is null");
                return;
            }
            AkBankManager.LoadBank(name, false, false);
        }

        public void UnloadBank(string name)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl UnloadBank name is null");
                return;
            }
            AkBankManager.UnloadBank(name);
        }

        public void Play(string name)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl Play name is null");
                return;
            }
            Play(name, globalGameObject);
        }

        public void Play(string name, GameObject go)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl Play name is null");
                return;
            }
            AkSoundEngine.PostEvent(name, go);
        }

        public void PlayAtGameObjectPosition(string name, GameObject go)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl PlaySoundAtGameObjectPosition name is null");
                return;
            }
            if (go == null)
            {
                Debug.LogError("AudioServiceImpl PlaySoundAtGameObjectPosition go is null:" + name);
                return;
            }

            if (AkSoundEngine.RegisterGameObj(go, go.name) != AKRESULT.AK_Success)
            {
                Debug.LogError("AudioServiceImpl PlaySoundAtGameObjectPosition go is register failed:" + name + "  " + go.name, go);
                return;
            }
            AkSoundEngine.SetObjectPosition(
                            go,
                            go.transform.position.x,
                            go.transform.position.y,
                            go.transform.position.z,
                            go.transform.forward.x,
                            go.transform.forward.y,
                            go.transform.forward.z,
                            go.transform.up.x,
                            go.transform.up.y,
                            go.transform.up.z);

            Play(name, go);
            AkSoundEngine.UnregisterGameObj(go);
        }

        public void Stop(string name)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl Stop name is null");
                return;
            }
            Stop(name, globalGameObject);
        }

        public void Stop(string name, GameObject go)
        {
            if (name.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl Stop name is null");
                return;
            }
            AkSoundEngine.ExecuteActionOnEvent(name, AkActionOnEventType.AkActionOnEventType_Stop, go, 300, AkCurveInterpolation.AkCurveInterpolation_Linear);
        }

        public void SetRTPC(string rtpc, float value)
        {
            if (rtpc.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl SetRTPC rtpc is null");
                return;
            }
            AkSoundEngine.SetRTPCValue(rtpc, Mathf.Clamp(value, minRTPCValue, maxRTPCValue));
        }

        public void SetState(string group, string state)
        {
            if (group.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl SetState group is null");
                return;
            }
            if (state.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl SetState state is null:" + group);
                return;
            }
            AkSoundEngine.SetState(group, state);
        }

        public void SetSwitch(string group, string value, GameObject go)
        {
            if (group.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl SetSwitch group is null");
                return;
            }
            if (value.isNullOrEmpty())
            {
                Debug.LogError("AudioServiceImpl SetSwitch value is null:" + group);
                return;
            }
            if (go == null)
            {
                Debug.LogError("AudioServiceImpl SetSwitch go is null:" + group + "  value:" + value);
                return;
            }
            AkSoundEngine.SetSwitch(group, value, go);
        }
    }

此脚本中包含了注册,播放,加载Bank文件和卸载Bank文件以及各种切换,音量控制等函数,经过测试,加载和播放是完全可以实现的,其他的函数暂时还没有进行使用,都是WwiseSDK中提供的接口,之后在使用的时候会进行研究
以上是本次Wwise音效接入的一点总结,有不足之处还请大家指出,一定改正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 这个错误是由于Python解释器在初始化时无法导入site模块而导致的致命错误。site模块是Python的一个内置模块,它包含了一些与Python解释器和标准库相关的配置信息。如果无法导入该模块,可能会导致一些Python程序无法正常运行。 解决这个问题的方法是检查Python的安装是否正确,确保site模块存在并且可以被正确导入。如果问题仍然存在,可以尝试重新安装Python或者升级到最新版本。 ### 回答2: fatal python error: init_import_site: failed to import the site module 是指在导入python的site模块时出现了严重的错误,导致程序无法正常运行。 在 Python 中,site 模块是一个内置模块,它被用来处理与Python执行环境相关的事情,包括添加 Python 路径到 sys.path 中,设置环境变量等操作,因此它是非常重要的。 那么为什么会出现导入 site 模块失败的错误呢? 一般来说,这种错误通常是因为 Python 解释器的环境出了问题,比如 Python 安装程序中的环境变量或 Python 安装本身出现问题。一般情况下,我们可以尝试以下几种解决方案: 1.卸载并重新安装 Python 2.检查环境变量配置是否正确 3.检查系统的 Python 安装目录是否被正确添加到 PATH 环境变量中 4.检查系统的 Python 安装路径是否出现乱码或非法字符导致了问题 总之,fatal python error: init_import_site: failed to import the site module 是一个严重的错误,需要我们仔细检查环境变量和 Python 安装目录,确保 Python 能够在正确的环境下运行。如果以上解决方案都无法解决问题,那么我们应该考虑重新安装操作系统或与 Python 随附的库相关的其它软件。 ### 回答3: fatal python error: init_import_site: failed to import the site module 是Python在启动时可能会遇到的错误之一。site模块是Python启动时必需的一个内置模块,其作用是为用户提供Python模块的搜索路径和其他相关信息。 出现 init_import_site: failed to import the site module 错误可能有以下原因: 1. Python安装不正确:如果Python没有安装完整或者在安装过程中出现错误,可能会导致site模块无法正确导入。在这种情况下,重新安装Python可能是解决问题的最佳方法。 2. Python环境变量不正确: Python需要正确设置环境变量才能正常运行。如果不正确地设置PYTHONPATH环境变量或者在PATH中没有包含Python的安装路径,就会导致site模块无法正确导入,从而引发该错误。 3. Python文件被损坏:在某些情况下,Python的主程序文件可能会因为某些问题而损坏,从而导致site模块无法正确导入。在这种情况下,重新安装Python也许是解决问题的最佳方法。 要解决 init_import_site: failed to import the site module 错误,可以尝试以下几种方法: 1. 重新安装 Python。 2. 检查PYTHONPATH环境变量和PATH路径,确保它们设置正确。 3. 检查Python的主程序文件是否有损坏,可以通过重新下载或复制另一份Python文件进行替换。 总之,出现 fatal python error: init_import_site: failed to import the site module 错误时,我们需要深入分析错误的原因,并且采取针对性措施,尽可能地消除该错误并保证Python正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值