איך ליצור משחק Unity מעולה בכל גורמי הצורה

בשוק הגיימינג התחרותי של היום, חשוב יותר מתמיד להגיע לקהל רחב ככל האפשר. כשמפתחים משחקים לגורמי צורה שונים, כמו טלפונים, טאבלטים, מכשירים מתקפלים ומחשבים, אפשר להקיש על בריכה גדולה יותר של שחקנים פוטנציאליים ולהגדיל את סיכויי ההצלחה שלך.

תמיכה בכיווץ מסך

כדי לתמוך בגורמי צורה שונים, צריך לשנות את גודל המשחק. אפשרות סגירה מאפשרות למשחק לתמוך בתצורות מכשיר כמו תצוגה לאורך כיוון לרוחב, מצב ריבוי חלונות ומצב מקופל ומצב לא מקופל של מכשירים מתקפלים.

אם המשחק לא תומך בכל הגדלים של החלונות ואת הגדרות הכיוון, בפורמט letterbox של הפלטפורמה מצב תאימות, ובמקרה הצורך, מציג בנגן לפני שעוברים לתצורה שאינה נתמכת.

איור 1. תיבת דו-שיח לתאימות הגדרות.

מידע נוסף זמין במאמר הבא: תמיכה בכיווץ של מסך גדול.

מצב ריבוי חלונות

איור 2. ממשקי משתמש שונים במחשב ומתקפלים במצב שולחני.

ריבוי חלונות מצב מאפשר מספר אפליקציות כדי לשתף את אותו מסך בו-זמנית. אפליקציות יכולות להיות זו לצד זו או אפליקציה אחת מעל השנייה (מצב מסך מפוצל), אפליקציה אחת בשכבת-על בחלון קטן אפליקציות אחרות (מצב 'תמונה בתוך תמונה') או אפליקציות ספציפיות במכשירים ניידים נפרדים, חלונות שניתן לשנות את הגודל שלהם (מצב 'פריסה גמישה').

כדי להימנע ממצב תאימות כשהמשחק פועל במצב מרובה חלונות. יש להצהיר שהמשחק שלך יכול לטפל יכולת שינוי על ידי הפעלת האפשרות חלון שניתן לשנות את גודלו הגדרות build של Unity.

איור 3. הגדרות הרזולוציה וההצגה של Unity ל-Android.

גזירי תצוגה

מגרעת במסך היא אזור במכשירים מסוימים שמתרחב אל שטח המסך. הגזרות מאפשרות מעבר של כל השוליים בזמן שהיא מספקת מרווח לחיישנים חשובים בחלק הקדמי במכשיר.

איור 4. מגרעת במסך.

כדי לספק למשחק שלך חוויה מקצה לקצה, צריך להגדיר אותו עם מוּדעוּת למסגרת בטוחה. שולחים שאילתה ל-safeArea API של Unity כדי לקבל האזור הבטוח במסך בפיקסלים וכוונון ממשק המשתמש וחוויית המשתמש של המשחק בהתאם, במיוחד לאלמנטים שהמשתמשים יכולים ליצור איתם אינטראקציה.

תנוחות מתקפלות

מכשירים מתקפלים יכולים להיות במצב מקופל, למשל FLAT (פתוח לגמרי) או HALF_OPENED (במיקום בין פתוח מלא לבין סגור לגמרי). כשמכשיר נמצא במצב של HALF_OPENED, יש שני מצבים אפשריים, בהתאם לכיוון של התכונות המקופלות: מצב שולחני (קיפול אופקי) ומצב הספר (בקיפול אנכי). כדאי להשתמש במצב שולחני כדי להגביר את מידת העניין של השחקנים והמעורבות שלהם.

איור 5. משחק במצב שולחני עם תצוגה ראשית בחלק האנכי של המסך, שליטה בחלק האופקי.

כדי להטמיע מצב 'על משטח, מסך למעלה': מרחיבים את פעילות ברירת המחדל ב-Unity ואז להשתמש בספריית הפריסה של Jetpack windowManager כדי חשוב לשים לב לחלק של המשחק.

פרויקט לדוגמה של Unity

הפרויקט לדוגמה של Unity מבוסס על פרויקט ההדגמה של Unity 2D Lost Crypt הפרויקט לדוגמה מדגים איך תומכת בכיווץ מסך גדול ב-Unity. מסך גדול ומכשיר מתקפל לתמיכה נדרשים מספר שינויים באפשרויות ה-build של Unity, בפריסת הגבולות של המצלמה ושל ממשק המשתמש.

הפרויקט לדוגמה זמין להורדה. הפרויקט מכיל ארבע סצנות שונות:

  • מקורי: תמיכה בתכונה הבסיסית שניתן לשנות את הגודל שלה
  • עיגון: כמו 'מקורי' אבל מתאים את עצמו ליחסי גובה-רוחב שונים וללא המגרעת במסך
  • HingeAware: כמו 'עוגן' אבל הוא תומך במצב שולחני
  • התפריט הראשי: סצנת ההתחלה, מאפשרת לנווט לסצנות האחרות וגם תומך באופן מלא בכל הכיוונים של המכשיר, בקיפול, בפריסה ובמצב שולחני

כשמגדירים את האפליקציה ל-Android, צריך לבחור את כל הסצנות ולהגדיר את התפריט הראשי סצנה בתור סצנת ההתחלה.

איור 6. 'תפריט ראשי' מאפשר לכם לנווט לסצנות אחרות במצב שולחני.

התחילו בתמיכה בחלון שניתן לשנות את הגודל שלו

הטמעת תמיכה בגדלים שונים וביחסי גובה-רוחב שונים אפליקציה עם מסך גדול ב-Android שמבטיחה שהמשחק או האפליקציה יוצגו בצורה נכונה במכשירים שונים. הפעלת המשחק כדי לשנות את הגודל שלו או לשנות אותו יחס גובה-רוחב באמצעות הגדרת המאפיין חלון שניתן לשנות את הגודל שלו ב-build של Unity (עיינו בקטע מצב ריבוי חלונות). התאמה יחס הגובה-רוחב של המצלמה והקנבס כדי שיתאימו בצורה טובה יותר מסכים. אפשר להציג את הגדרות הפרויקט בהגדרות של Build וב- קובץ Plugins/Android/AndroidManifest.xml. צפייה במסך מלא שניתן לשנות את גודלו בשדה 'Original' לסצנה.

איור 7. "מקורי" הסצנה תומכת בתכונה 'חלון שניתן לשנות את גודלו'.

עוברים למסך מלא תוך כדי טיפול בחיתוך

הפעלת המשחק כך שתוצג בכל המסך כדי לבצע גיימפליי לחוויית משתמש משופרת. לעדכן את העיגון של ממשק המשתמש של המשחק וגם להגדרות המצלמה שצריך להתאים אוטומטית גודל המסך. כך רכיבי ממשק המשתמש יכולים לשמור על המיקום שלהם ביחס גודל המסך.

"עיגון" משתמשת סקריפט אחד (CameraAspectLock) לתגובה לשינויים בהגדרות המכשיר באמצעות אמצעי לפעילות מורחבת (ראו Assets/Plugins/Android/LargeScreenPlayableActivity.java). של Unity ה-safeArea API מודגמת ב-SafeZoneAPI שמקשר לאובייקט SafeZone בתוך השדה 'עיגון' לסצנה.

סצנת משחק במסך מלא במסך פנימי וחיצוני של מכשיר מתקפל.
איור 8. 'עיגון' עם מגרעת במסך.

אופטימיזציה למכשירים מתקפלים

הסצנה האחרונה של הפרויקט לדוגמה של Unity , "HingeAware", כוללת אובייקט ConfigurationManager שמגיב לקיפולים השונים במכשיר היעד באמצעות ממשקי API של ספריית Jetpack וגם פעילות מורחבת (מידע נוסף זמין כאן: Assets/Plugins/Android/LargeScreenPlayableActivity.java). בסצנה נעשה שימוש הסקריפט PanelOnFold לשליטה בממשק המשתמש על סמך סטטוס הקיפול של המכשיר, לדוגמה, כדי להציג את חלונית הבקרה התחתונה כש שהמכשיר נמצא על משטח, ומכוונן את המצלמה.

איור 9. 'HingeAware' הסצנה תומכת במיצוב שולחני.