gpt4 book ai didi

c# - SendMessage 不启动函数 (HoloLens/Unity/C#)

转载 作者:行者123 更新时间:2023-11-30 15:18:16 25 4
gpt4 key购买 nike

目标:使用听觉控制从一个场景切换到另一个场景。

问题:在 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 () {

}
}

最佳答案

Unity 的 SendMessage function 在调用函数时区分大小写。

您的函数名称是 OnNextstep 但您正在调用 OnNextStep:

SendMessage("OnNextStep", SendMessageOptions.DontRequireReceiver);

注意大写和非大写的 “S”。解决这个问题,假设还有其他隐藏的问题,您的问题应该得到解决。

注意:

避免在 Unity 中使用 SendMessage。如果您想从另一个脚本调用函数,请使用 GameObject.Find 找到 GameObject 然后使用 GetComponent 获取该脚本然后调用它的函数.您也可以使用 events and delegates做这个。

关于c# - SendMessage 不启动函数 (HoloLens/Unity/C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com