自定义点击列表

Custom onClick list

我可以使用动态和静态列表 onClick 的分组方法创建自定义区域吗? like this

是也不是! ^^

  • 是的,您可以创建自己的事件类型并为其分配动态回调。您要找的是 UnityEvent.

    对于动态参数化的,请参阅UnityEvent<T0> to UnityEvent<T0, T1, T2, T3>,具体取决于您需要多少参数。

    对于单个 int 的示例,它将是(与 API 示例完全相同)

    // Since Unity doesn't support direct serialization of generics you have to implement this [Serializable] wrapper
    [Serializable]
    public class MyIntEvent : UnityEvent<int>
    {
    }
    
    public class ExampleClass : MonoBehaviour
    {
        public MyIntEvent m_MyEvent;
    }
    

  • 不行,你不能简单地改变现有的UI.Button.onClick实现,它是无参数的。

    但是,您可以构建一个新组件并将其附加到按钮上,例如

    [RequireComponent(typeof(Button))]
    public class ExampleClass : MonoBehaviour
    {
        [SerializeField] private Button _button;
        public MyIntEvent onClickWithIntParameter;
    
        private void Awake()
        {
            if(!_button) _button = GetComponent<Button>();
            _button.onClick.AddListener(HandleOnClick);
        }
    
        private void HandleOnClick()
        {
            // Wherever you get your int from
            var value = 123;
    
            onClickWithIntParameter.Invoke(value);
        }
    }