حل اشکال مربوط به استفاده از کد OnPointerDown.AddListener در یونیتی_ رفع خطای AddListener
يكشنبه, ۱۱ مهر ۱۳۹۵، ۰۴:۰۰ ق.ظ
gameover.blog.ir
دوستان یک خطایی رو برای ما ارسال کردند و گفتند رفع اشکال کنید:
پاسخ:
برای رویداد متد OnClick از کلاس Button یا .... می تونستیم از متد AddListener برای اضافه کردن یک تابع برای گوش دادن به دستور کلیک و اجرای کد دلخواهمون بسازیم.
اما در بعضی ورژن های یونیتی متد AddListener برای ساب کلاس OnPointerDown تعریف نشده و کد زیر مجاز نیست (دچار خطا میشه):
Preview (hint: you can copy and paste the preview into Microsoft Word):
public Button btn1; void Start() { btn1.OnPointerDown.AddListener( ()=>{ } )
برای رفع اشکال از روش قدیمی استفاده می کنیم و از رویدادی مثل کد زیر استفاده می کنیم:
using UnityEngine; using UnityEngine.EventSystems; public class BT : MonoBehaviour, IPointerDownHandler { public void OnPointerDown(PointerEventData data) { } }
نکته : در ورژن های جدید یونیتی کامپوننت Event Trigger می دیم و همونجا می تونیم رویداد دلخواه و تابعی که می خوایم به محض وقوع اون رویداد مثلا کلیک یا نگه داشتن لمس و رها نکردن رخ بده رو از زیر شاخه اسکریپت بعد از اختصاص گیم ابجکت مربوط به لیست،انتخاب می کنیم(حتما تابع هم باید public باشه ویلا تو لیست نمیاد)
مثلا برای کد دادن به image کامپوننت Event trigger + Event system بهش می دیم. سپس اسکریپتی می سازیم و تابعی حتما از نوع public توش باید باشه که اونو به event trigger میدیم. به این صورت که اول اسکریپت رو به شی می دیم سپس شی رو می کشیم روی event trigger و بعدش تابع مربوط رو از زیر شاخه ی اسکیپت مربوط انتخاب می کنیم
۹۵/۰۷/۱۱