类实例名称
问题描述:
我写了一个RadioButton
类,它包含以下UnityEvent
:类实例名称
[Serializable]
public class RadioEvent : UnityEvent<string> { }
[Space]
public RadioEvent OnRadioClicked = new RadioEvent();
附上脚本单选按钮,组合屋...
在同一个脚本,我也写了一财产(找出哪些预制实例被点击)以及事件触发:
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
if (isRadioToggle)
OnRadioClicked.Invoke(_name);
当点击一个按钮,我想找出w^HICH一个是(它的名字吗?)所以在另一个脚本管理单选按钮(如具有按键为孩子们的容器),我处理了点击事件如下:
// Subscribe to the RadioTapHandler method.
private void Start()
{
_toggleButton.OnRadioClicked.AddListener(RadioTapHandler);
}
// Unsubscribe from the RadioTapHandler method.
private void OnDestroy()
{
_toggleButton.OnRadioClicked.RemoveListener(RadioTapHandler);
}
// What should happen when a radio toggle button is clicked?
private void RadioTapHandler(string clickedRadioButton)
{
Debug.Log("The clicked radio button is: " + clickedRadioButton);
}
第一个奇怪的是,调试消息仅在我点击第一个单选按钮时打印,而不在其他任何按钮上。此外,打印的调试消息实际上并不包含实例名称:
The clicked radio button is: UnityEngine.Debug:Log(Object)
我在做什么错?实例化时,创建的RadioButton
类的实例是否未命名?我是否以某种方式修改了我的Name
属性以获取创建的实例的名称?我错过了什么?
答
只需添加在启动或唤醒这一说法在你的脚本:
Name = gameObject.name;
尝试调用事件 –
感谢您之前设置名称为gameObject.name。我用'set {_name = gameObject.name;'替换了自动setter。 }'但点击后,它仍然会记录:'单击的单选按钮是:UnityEngine.Debug:Log(Object)' – Joshua
请让它像以前一样,只需在脚本中的Start或Awake中添加以下语句: 'Name = gameObject.name;' –