Unity游戏开发 语音识别功能(简单易懂)

先看语音识别的效果

Unity测试语音识别视频

然后是代码部分,首先先看命名空间----

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEngine.Windows.Speech;

最重要的就是这个using UnityEngine.Windows.Speech;

对于这个命名空间官方是这样解释和示例的

以下是我运用的Demo示例 添加的指令可能也点多 自行斟酌使用

public class Vudio : MonoBehaviour
{
    //需要控制的游戏对象 (拖拽实例化即可)
    public GameObject fire;
    private bool isWalk, isCallBack;
    private int walkspeed = 10;
    private int backspeed = 5;
    KeywordRecognizer keyword;
    Dictionary<string, Action> dic = new Dictionary<string, Action>();
    // Start is called before the first frame update
    void Start()
    {
        dic.Add("左", Left);
        dic.Add("右", Right);
        dic.Add("前", Forward);
        dic.Add("后", Back);
        dic.Add("上", Up);
        dic.Add("下", Down);
        dic.Add("走", Walk);
        dic.Add("停", Stop);
        dic.Add("回来", CallBack);
        dic.Add("关闭", Over);
        keyword = new KeywordRecognizer(dic.Keys.ToArray());
        keyword.OnPhraseRecognized += Keyword_OnPhraseRecognized;
        //开启
        keyword.Start();
    }

    private void Keyword_OnPhraseRecognized(PhraseRecognizedEventArgs args)
    {
        //输出所控制的指令
        Debug.Log(args.text);
        //调用指令回调函数
        dic[args.text].Invoke();
    }
    private void Over()
    {
        EditorApplication.isPlaying = false;
    }

    private void CallBack()
    {
        isCallBack = true;
        isWalk = false;
    }

    private void Stop()
    {
        isWalk = false;
        isCallBack = false;
    }

    private void Walk()
    {
        isWalk = true;
        isCallBack = false;
    }

    private void Down()
    {
        fire.transform.position = new Vector3(fire.transform.position.x, fire.transform.position.y - 1, fire.transform.position.z);
    }

    private void Up()
    {
        fire.transform.position = new Vector3(fire.transform.position.x, fire.transform.position.y + 1, fire.transform.position.z);
    }

    private void Back()
    {
        fire.transform.position = new Vector3(fire.transform.position.x, fire.transform.position.y, fire.transform.position.z - 1);
    }

    private void Forward()
    {
        fire.transform.position = new Vector3(fire.transform.position.x, fire.transform.position.y, fire.transform.position.z + 1);
    }


    private void Right()
    {
        fire.transform.position = new Vector3(fire.transform.position.x + 1, fire.transform.position.y, fire.transform.position.z);
    }

    private void Left()
    {
        fire.transform.position = new Vector3(fire.transform.position.x - 1, fire.transform.position.y, fire.transform.position.z);
    }
    private void Update()
    {
        if (isWalk)
        {
            fire.transform.Translate(Vector3.forward * Time.deltaTime * walkspeed);
        }
        if (isCallBack)
        {
            fire.transform.Translate(Vector3.back * Time.deltaTime * backspeed);
        }
    }
}

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值