RED CROWNINTERACTIVEצרו קשר
עב
תפריט

RED CROWN JOURNAL

Unity או נייטיב? איך בוחרים טכנולוגיה לאפליקציה

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

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

איפה המשתמש מבלה את רוב הזמן?

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

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

מה פיתוח אפליקציה נייטיב נותן שקשה להשיג ב-Unity

פיתוח אפליקציה נייטיב פירושו לבנות לכל מערכת בכלים של היצרן: Swift ו-SwiftUI באפל, Kotlin ו-Jetpack Compose באנדרואיד. אפל מתארת את SwiftUI כמסגרת לבניית ממשקים בכל הפלטפורמות שלה (Apple - SwiftUI לבניית ממשק באפליקציות אפל), וגוגל מתארת את Compose כערכה המומלצת לבניית ממשק נייטיב באנדרואיד, עם גישה ישירה לממשקי המערכת (Android Developers - Jetpack Compose לבניית ממשק נייטיב).

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

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

מתי Unity היא הבחירה הנכונה

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

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

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

ומה אם רק מסך אחד צריך תלת-ממד?

זה מצב נפוץ: אפליקציה רגילה, ובתוכה מסך אחד של מודל תלת-ממדי או AR. Unity מאפשרת להטמיע את התוכן והמנוע שלה בתוך אפליקציה שנכתבה ב-Swift או ב-Kotlin, כך שהמסכים נשארים נייטיב והסצנה רצה ב-Unity (Unity - שילוב Unity כספרייה בתוך אפליקציה נייטיב).

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

ולפעמים לא צריך מנוע בכלל. אם כל מה שהלקוח צריך הוא לראות מוצר בחדר שלו, באייפון אפשר להציג קובץ USDZ במציאות רבודה דרך AR Quick Look שמובנה במערכת של אפל (Apple AR Quick Look - הצגת מודלים USDZ במציאות רבודה); באנדרואיד בודקים את החלופה בנפרד, ובאתר אפשר להציג מודל בצופה תלת-ממדי. כדאי לבדוק את האפשרויות הפשוטות לפני שמכניסים מנוע לאפליקציה.

Unity או נייטיב: השוואה לפי מה שהאפליקציה צריכה

Unity או נייטיב: השוואה לפי מה שהאפליקציה צריכה
מה האפליקציה צריכהנייטיב (Swift / Kotlin)Unityנייטיב עם Unity כספרייה
מסכים, טפסים, תשלומים והתראותמתאים: רכיבי המערכת והתנהגות מוכרתאפשרי, אבל כל מסך נבנה בתוך המנועמסכים נייטיב, כך שמתאים
סצנה תלת-ממדית או AR כחוויה מרכזיתאפשרי בספריות של כל מערכת, אבל נבנה פעמיים ודל בכלי תוכןמתאים: זה הבסיס של המנועמתאים כשהסצנה היא מסך מלא נפרד
מודל קטן בתוך מסך רגילספריות תלת-ממד או צופה פשוטמיותר: מנוע שלם בשביל מודל אחדלא מתאים: Unity מוצגת במסך מלא בלבד
גרסה עתידית למשקפי VR או ARבנייה מחדש של התוכן התלת-ממדיבסיס משותף לתוכן וללוגיקההסצנה ב-Unity ניתנת להעברה, המסכים לא
תחזוקה לאורך זמןשני בסיסי קוד, מחזור עדכוני מערכתבסיס אחד, ועדכוני מנוע ומערכתשני מחזורי העדכון יחד

מי יתחזק את זה בעוד שנתיים?

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

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

שאלות נפוצות

האם Unity מתאימה לאפליקציה שאינה משחק?

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

מה עם Flutter או React Native?

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

אפשר להתחיל באחת ולעבור לשנייה?

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

מקורות טכניים

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