0
我已经重写Unity的零参数事件类,以便在调用自定义事件时返回string
参数。该参数只是按下的键的代码。带参数的定制Unity事件
但是,当我试图包含返回的键代码的字符串转换时,我收到一条错误消息,说明键代码在当前上下文中不存在。
我很困惑,为什么它不被识别,为什么我不能返回它的字符串值与我的事件。有人可以帮助我了解我做错了什么,以及我如何在这里实现我的目标?
在下面的第一个片段中,"My event arg"
当然是我的事件返回并打印到控制台,但是当我(String)kCode
或kCode.ToString
,该kCode
本身无法识别更换...
public class EventScript : MonoBehaviour
{
[Serializable]
public class RadioEvent : UnityEvent<string> { }
public RadioEvent OnRadioClicked = new RadioEvent();
void Update()
{
if (Input.anyKeyDown)
{
foreach(KeyCode kCode in Enum.GetValues(typeof(KeyCode)))
{
if (Input.GetKeyDown(kCode))
Debug.Log("KeyCode = " + kCode);
}
OnRadioClicked.Invoke("My event arg");
}
}
}
public class RadioManager : MonoBehaviour
{
private EventScript _eventScript;
void Awake()
{
_eventScript = GetComponentInChildren<EventScript>();
}
void Start()
{
_eventScript.OnRadioClicked.AddListener(MyEventHandler);
}
void OnDestroy()
{
_eventScript.OnRadioClicked.RemoveListener(MyEventHandler);
}
void MyEventHandler(string name)
{
Debug.Log("My event handled with " + name);
}
}
非常感谢您的详细解释和帮助。 – Joshua