سازگاری با اندازه‌های مختلف صفحه‌ی نمایش‌ها

حفظ UI و HUD در مکانشان

به احتمال زیاد بازی شما دارای عناصر UI (با نام مستعار HUD) می‌باشد، مثل سلامتی، مهمّات یا سایر اطلاعات دیگری که باید همیشه در مکانی خاص بر روی صفحه به نمایش درآیند.
برای این کار لایه‌ای جدید باز کرده و پارالاکس آن را (0،0) کنید. اگر می‌خواهید موقع تغییر مقیاس بازی مقیاس UI شما تغییری نکند scale rate آن را هم صفر قرار دهید.

مطمئن شوید تمام اشیاء UI شما در این لایه قرار گرفته باشند آن‌ها را در قسمت بالا سمت چپ لیوت قرار دهید، در داخل محوّطه نقطه‌چین شده که نشان دهنده‌ی ناحیه‌ی پنجره‌ی بازی است. حالا آن‌ها باید دقیقاً در همان محل در صفحه‌ی نمایش باشند، مثل متن score در تصاویر قبل.

رفتار Anchor

اگر شیئی را در قسمت سمت راست در پایین پنجره قرار دهید و اندازه‌ی پنجره را تغییر دهید متوجّه می‌شوید که شیء حرکت نمی‌کند برای این‌که مکانش نسبت به سمت راست و پایین پنجره ثابت بماند می‌توانید از رفتار Anchor استفاده کنید تا شیء ما در مکانی که دارد لنگر بیندازد.

توجّه داشته باشید که رفتار Anchor فقط برای اشیائی به کار می‌رود که در لایه‌ای با پارالاکس (0,0) قرار داشته باشند.
با تنظیم ویژگی‌های Anchor در نوار ویژگی‌ها می‌توانید مختصّات اشیاء را نسبت به طرف راست پنجره یا پایین پنجره یا هر دو ثابت نگه دارید. به طور پیش‌فرض اشیاء نسبت به گوشه‌ی بالا-سمت چپ ثابت باقی می‌مانند.
اگر کنترل‌های فرم یا اشیاء دیگری دارید که می‌خواهید هرچه پنجره‌ی بازی بزرگتر شد اندازه‌ی آن‌ها نیز بزرگتر شود، می‌توانید از ویژگی‌های Right edge و Bottom edge رفتار Anchor استفاده کنید. امّا اگر نمی‌خواهید اندازه‌ی اشیاءتان تغییر کند، مقدار پیش‌فرض این دو ویژگی که None است را تغییر ندهید.

سایر خصوصیّات به درد بخور

اکسپرشن‌های سیستمی WindowWidth و WindowHeight اندازه‌ی فعلی پنجره‌ی بازی را به پیکسل برمی‌گردانند. ممکن است بخواهید با توجّه به اندازه‌ی پنجره بعضی از اشیاء را نشان بدهید یا ندهید، تنظیمات خاصّی را برای صفحات نمایش کوچک در نظر بگیرید، یا بعضی از انواع UI را در صفحه‌ی نمایش‌های بزرگ نمایش ندهید. در این‌جاست که این اکسپرشن‌ها به درد می‌خورند.
اکسپرشن‌های سیستمی ViewportLeft، ViewportRight، ViewportTopو ViewportBottom برای یک لایه می‌توانند مختصّات منطقه‌ی دید را برگردانند. مثلاً برای این‌که شیئی در وسط صفحه به نمایش در آید می‌توانید مختصّات آن را به صورت زیر تغییر دهید:

X = (ViewportLeft(“Layer”) + ViewportRight(“Layer”)) / 2
Y = (ViewportTop(“Layer”) + ViewportBottom(“Layer”)) / 2

درضمن، در حالت تمام صفحه ممکن است شاهد مشکلاتی در حرکت باشید که منشأ آن‌ها مرزهای لیوت است. برای حلّ این مشکل می‌توانید در ویژگی‌های لیوت Unbounded scrolling را روی Yes قرار دهید، و خودتان حرکت کردن را محدود کنید (مثلاً اطراف لیوت را با اشیائی جامد پر کنید)

رفتن به حالت تمام صفحه در حین بازی

شیء Browser اکشنی دارد به اسم Request fullscreen. با این اکشن می‌توانید بازی را به حالت تمام صفحه ببرید. در پارامترهای این اکشن به راحتی می‌توانید یکی از حالت‌های Centered، Crop، Scale outer، Scale inner، Letterbox scale یا Letterbox integer scale را انتخاب کنید. اگر یادتان باشد این‌ها مربوط می‌شدند به تنظیمات Fullscreen in browser. هنگام تمام صفحه شدن اندازه‌ی پنجره‌ی بازی هم تغییر می‌کند، بنابراین مسئله‌ی سازگاری با چندین صفحه‌ی نمایش اهمّیّت می‌یابد و در نتیجه این گزینه‌ها را در اختیارمان قرار می‌دهد.
تذکّر: به خاطر مسائل امنیّتی اکشن Request fullscreen فقط در ایونت‌های user-inputted درست کار می‌کند. ایونت‌هایی مثل فشردن یک کلید از صفحه کلید و یا کلیک کردن بر روی یک شیء دکمه.

برای اطمینان تست کنید

شما باید بازی‌تان را بر روی دستگاه‌های مختلف تست کنید تا ببینید که چگونه کار می‌کند. در بین بازی‌ها رایج شده است که بسته به اندازه‌ی صفحه‌ی نمایش، نوع UI تغییر می‌کند. راه اندازی چنین چیزی واقعاً کار می‌برد. ولی برای یک بازی ساده می‌توانید فقط از یک نوع UI برای تمام اندازه‌ها استفاده کرد. این به بازی‌تان بستگی دارد.
درضمن شما می‌توانید بازی‌تان را از طریق Wifi یا LAN بر روی دستگاه‌های دیگر خود تست کنید. این طوری تست بازی بر روی دستگاه‌های واقعی بسیار سریع‌تر و ساده‌تر می‌شود.
بزرگترین اندازه‌ی صفحه‌ی نمایش آیپدهای نسل سوم 1536×2048 است، و کوچکترین اندازه حدود 480×320 است که متعلّق به آیفون3 و قبل از آن می‌باشد. این محدوده‌ی خیلی بزرگی‌ست. مطمئن شوید بازی‌تان در همه‌ی این اندازه‌ها خوب کار می‌کند. مسلّماً شما نمی‌خواهید بازی‌تان در بعضی از صفحه‌ی نمایش‌ها به خاطر دیده نشدن دکمه‌ها یا بیش از حد کوچک بودن‌شان به طوری که نشود فشارشان داد قابل بازی کردن نباشد.
مجتبی قاسم زاده تهرانی

سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۷ نظر

افزودن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق برای مرجع تخصصی کانستراکت محفوظ است.