¿Puedo crear una región personalizada con métodos agrupados para la lista onClick como dinámica y estática? Me gusta esto
¡Si y no! ^^
Sí , puede crear su propio tipo de evento tomando un parámetro y asignándole devoluciones de llamada dinámicas. Lo que estás buscando esUnityEvent .
Para los parámetros dinámicos, consulte UnityEvent<T0> a UnityEvent<T0, T1, T2, T3> según la cantidad de parámetros que necesite.
Para el ejemplo con un solo int sería (exactamente como en el ejemplo de la 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; } No , no puede simplemente cambiar la implementación existente de UI.Button.onClick que no tiene parámetros.
Sin embargo, lo que podría hacer es crear un nuevo componente y adjuntarlo a un botón como
[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); } }