类实例名称

问题描述:

我写了一个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属性以获取创建的实例的名称?我错过了什么?

+1

尝试调用事件 –

+0

感谢您之前设置名称为gameObject.name。我用'set {_name = gameObject.name;'替换了自动setter。 }'但点击后,它仍然会记录:'单击的单选按钮是:UnityEngine.Debug:Log(Object)' – Joshua

+1

请让它像以前一样,只需在脚本中的Start或Awake中添加以下语句: 'Name = gameObject.name;' –

只需添加在启动或唤醒这一说法在你的脚本:

Name = gameObject.name;