کنترل ماوس مجازی با دسته بازی در یونیتی

هنگام توسعه بازی‌های اندروید برای طیف وسیعی از فرم فاکتورها - از جمله دستگاه‌های تاشو، تبلت‌ها و صفحه نمایش‌های بزرگ - بازیکنان اغلب کنترلرهای خارجی یا گیم‌پد را متصل می‌کنند. برای صفحات رابط کاربری که در اصل برای تعاملات لمسی یا ماوس طراحی شده‌اند، پیمایش منوها با یک کنترلر می‌تواند چالش برانگیز باشد.

اگرچه طراحی مجدد معماری رابط کاربری بر اساس ناوبری استاندارد D-pad عموماً تجربه کاربری بهتری را ارائه می‌دهد، اما ممکن است همیشه برای پروژه‌های موجود امکان‌پذیر نباشد. به عنوان یک گزینه جایگزین، سیستم ورودی یونیتی کامپوننت VirtualMouseInput را ارائه می‌دهد. این کامپوننت به شما امکان می‌دهد با استفاده از یک گیم‌پد یا کنترلر متصل، یک مکان‌نمای نرم‌افزاری مجازی روی صفحه را هدایت کنید.

درباره ورودی مجازی ماوس

کامپوننت VirtualMouseInput یک ابزار سطح بالا در بسته Unity Input System است که ورودی‌های گیم‌پد را به کنترل مکان‌نما روی صفحه، تعاملات اشاره‌گر رابط کاربری و رویدادهای شبیه‌سازی شده صفحه لمسی متصل می‌کند. وقتی فعال باشد،:

  • یک دستگاه ماوس مجازی ایجاد می‌کند: یک ماوس شبیه‌سازی‌شده توسط نرم‌افزار را در سیستم ورودی یونیتی در کنار هر دستگاه اشاره‌گر فیزیکی ثبت می‌کند.
  • کنترل‌های گیم‌پد را با حرکات مکان‌نما تطبیق دهید: می‌توانید دسته‌های آنالوگ یا D-padها را برای حرکت مکان‌نما روی صفحه نمایش تطبیق دهید و دکمه‌های کنترلر (مانند Button South / A) را برای شبیه‌سازی کلیک چپ، راست یا وسط ماوس تطبیق دهید.
  • ادغام با رابط کاربری یونیتی: با همکاری یکپارچه با InputSystemUIInputModule ، عناصر استاندارد رابط کاربری مانند دکمه‌ها، ضامن‌ها و اسلایدرها دقیقاً مانند ماوس سخت‌افزاری یا تعامل لمسی به مکان‌نمای مجازی واکنش نشان می‌دهند.
  • یک مکان‌نمای بصری را هدایت می‌کند: به شما امکان می‌دهد یک Graphic رابط کاربری (مانند یک کامپوننت Image ) اختصاص دهید که به طور خودکار موقعیت مکان‌نمای مجازی را روی صفحه ردیابی و رندر می‌کند.

ترکیب ماوس مجازی با TouchSimulation

اگر بازی شما در ابتدا منحصراً برای صفحات لمسی طراحی شده و به اسکریپت‌ها یا APIهای لمس مستقیم متکی است، یک ماوس مجازی به طور خودکار منطق تشخیص لمس موجود شما را فعال نمی‌کند زیرا به عنوان یک دستگاه ماوس به جای یک دستگاه صفحه لمسی ثبت می‌شود.

برای پشتیبانی از تعامل مکان‌نما با گیم‌پد بدون بازنویسی کد مدیریت لمس قدیمی خود، می‌توانید از ویژگی TouchSimulation سیستم ورودی یونیتی در کنار VirtualMouseInput استفاده کنید:

  • نحوه کار: وقتی با استفاده از TouchSimulation.Enable() فعال شود، سیستم ورودی به طور خودکار کلیک‌ها و حرکات اشاره‌گر را از هر دستگاه ماوس فعال - از جمله ماوس شبیه‌سازی شده توسط نرم‌افزار که توسط VirtualMouseInput ایجاد شده است - به رویدادهای شبیه‌سازی شده صفحه لمسی تبدیل می‌کند.
  • جریان داده حاصل: تعاملات دسته بازی و دکمه شما، ماوس مجازی را هدایت می‌کند، که سپس TouchSimulation آن را به رویدادهای تک لمسی ( Touchscreen ) تبدیل می‌کند. اسکریپت‌های تشخیص لمس موجود شما می‌توانند این رویدادها را بدون تغییر کد، به طور یکپارچه پردازش کنند.
  • ملاحظات: TouchSimulation محدود به شبیه‌سازی اشاره‌گر تک لمسی است. اگر گیم‌پلی شما به حرکات چند لمسی پیچیده مانند زوم با دو انگشت یا چرخش دو انگشتی متکی است، باید اتصالات ورودی اختصاصی را برای کنترل‌های دسته بازی خود پیکربندی کنید.

برای جزئیات فنی کامل، ویژگی‌ها و مستندات استفاده، به مراجع رسمی اسکریپت UnityEngine.InputSystem.UI.VirtualMouseInput و UnityEngine.InputSystem.EnhancedTouch.TouchSimulation مراجعه کنید.