ゴール:オーディタリーコントロールを使用してシーンを切り替える。SendMessageが機能しない(HoloLens/Unity/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.スクリーンショットではないコードを投稿します。 「Unity.Debug.Log」はSystem.Diagnostics.Debug.WriteLineではなく、「UnityEngine.Debug.Log」を使用してください。 Debug.Logを使用すると、どの機能が正しく動作していないかを知ることができます。 OnNextstepがat-allで呼び出されているかどうかを教えてください。 – Programmer
コードが追加されました。 OnNextStepは呼び出されません。 –
ここでも 'SendMessage'は必要ありません。このメソッドを直接呼び出すことができます: 'keywords.Add(" Next Step "、()=> { OnNextStep(); });'メソッド名が正確に一致する。 ;) – Draco18s