【发布时间】:2017-06-01 12:11:02
【问题描述】:
目标:使用听觉控制从一个场景切换到另一个场景。
问题:在 HoloLens Emulator 中启动应用程序时,会打开第一个场景。在说“下一步”时,HoloLens 确实识别了句子,但 sendMessage 没有打开OnNextStep() 函数。
感谢您的帮助! :)
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;
using System.Diagnostics;
using UnityEngine.SceneManagement;
public class KeywordManager : MonoBehaviour {
KeywordRecognizer keywordRecognizer = null;
Dictionary<string, System.Action> keywords = new Dictionary<string, System.Action>();
// Use this for initialization
void Start () {
keywords.Add("Next Step", () =>
{
SendMessage("OnNextStep", SendMessageOptions.DontRequireReceiver);
});
// Tell the KeywordRecognizer about our keywords.
keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray());
// Register a callback for the KeywordRecognizer and start recognizing!
keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized;
keywordRecognizer.Start();
}
private void KeywordRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
{
System.Action keywordAction;
if(keywords.TryGetValue(args.text, out keywordAction))
{
keywordAction.Invoke();
}
}
void OnNextstep()
{
UnityEngine.Debug.Log(this);
SceneManager.LoadScene("FirstStepScene");
}
// Update is called once per frame
void Update () {
}
}
【问题讨论】:
-
1.发布您的代码而不是屏幕截图。 2.使用
UnityEngine.Debug.Log而不是System.Diagnostics.Debug.WriteLine。使用 Debug.Log,您现在可以告诉我们哪个功能无法正常工作。告诉我们OnNextstep是否被调用。 -
已添加代码。 OnNextStep 未被调用。
-
这里也不需要
SendMessage。您可以直接调用该方法:keywords.Add("Next Step", () => { OnNextStep(); });Whiiich 会产生指出方法名称不完全匹配的副作用。 ;)
标签: c# unity3d hololens hololens-emulator