Diğer görsel dillerden; Birliğin aynı iç işleri takip etmediğini fark ettim.onClick.invoke, bir düğmeye tıklamakla aynı şey değildir
Düğmeli bir UI var; düğmesine bastığınızda, düğmenin adı hangi panelin görünür hale gelmesi gerektiğini gösterir; bu şekilde, hangi düğmeye basıldığına bağlı olarak çeşitli panelleri gizleyebilir ve gösterebilir ve UI'de her düğmeyi ayarlama konusunda endişelenmeyebilirim.
Şimdi, bu UI kullanırsanız çalışır; Çünkü olay sistemi itilmiş olan butonu yakalayabilir ve butonun adını saklayabilir; ancak onClick.Invoke ile aynı şeyi yaparsanız; Bu işe yaramaz.
Düğmenin çağırdığı işlev doğru çağrılır; Ancak olay sisteminde, arama düğmesinin adı hakkında hiçbir ipucu yok, çünkü UI'de hiçbir düğme çağrılmadı. onClick.Invoke UI üzerindeki tıklama/musluk aynı etkiye sahip olacak, ancak durum böyle değil
// this end up with the variable raising a null exception, when called
// from the onClick.Invoke()
string buttonname = EventSystem.current.currentSelectedGameObject.name;
beklenti wa. Bunun için bir çözüm var mı? Düğmelerle aradığım işlevleri çağırmak istiyorum, ancak bazı işlemleri yapmak için düğmelerin adlarına güveniyorum.
Bu sınırlamayı aşmak için işlevleri değiştirebilirim, ancak bunu yapmadan önce, bunu yalnızca kod aracılığıyla gerçekleştirmenin başka bir yolu olmadığından emin olmak istiyorum.
belki IPointerClickHandler içine bakmak ve üzerine yazmak istiyorum. Tıklanan nesne adına sahip bir eventData paramına sahiptir. –
Anlıyorum, işte bu şekilde çalışıyor. VC++’da, bunun için endişelenmenize gerek yok; tıklama olayı, düğme denetleyicisine (ve bunu uygulayan başka bir denetleyiciye) dayalı olduğundan; Bu, düğmeyi basılı tutamazsınız, butona basmadan tetiklenen her bir kod yolu tetiklenmez. Birlik yaklaşımı muhtemelen farklıdır, ben bu işleyiciye bakacağım (orijinal uygulamayı görmeye yardımcı olsa da) –