目标:从一个场景改变到另一个使用听觉对照。SendMessage消息不启动功能(HoloLens /统一/ C#)
问题:在HoloLens仿真器中启动应用程序时,会打开第一个场景。在说出“下一步”时,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。 – Programmer
已添加代码。 OnNextStep不被调用。 –
您也不需要'SendMessage'在这里。你可以直接调用这个方法:'keywords.Add(“Next Step”,()=> { OnNextStep(); });'这会带来副作用,指出方法名称没有完全匹配。 ;) – Draco18s