הוספת תת-מרחב לאפליקציה

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

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

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

מידע על היררכיות של מרחבי משנה

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

כדי ליצור Subspace מוטמע או משולב בתוך SpatialPanel,‏ Orbiter,‏ SpatialPopup או רכיב אחר, משתמשים ב-PlanarEmbeddedSubspace.

יש שני הבדלים עיקריים בין PlanarEmbeddedSubspace לבין Subspace:

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

ההתנהגויות האלה של PlanarEmbeddedSubspace מאפשרות יכולות כמו:

  • העברת ישות הצאצא עם ישות האם
  • הזזת המיקום של הצאצא באמצעות ההיסט SubspaceModifier
  • הצגת אובייקט תלת-ממדי שמרחף מעל ממשק המשתמש הדו-ממדי, ומתאים לגובה ולרוחב של המרחב המתאים בפריסה הדו-ממדית

התאמת פריסות למרחב משנה

ב-Android XR, פריסת האפליקציה קשורה כברירת מחדל ל-VolumeConstraints של Subspace במצב "מרחב מלא". לכן, כדאי להביא בחשבון את כמות השטח הגלוי שזמין למשתמש ולהתאים את הפריסה בהתאם. השדה recommendedContentBoxInFullSpace מספק את המאפיינים הספציפיים של התיבה התוחמת בתוך ActivitySpace, כדי שאפשר יהיה למקם את התוכן בשדה הראייה של המשתמש.

התוכן הראשי של האפליקציה צריך להתאים לתיבה הזו. אם יש לכם תוכן שחורג מהגבולות המומלצים, כדאי להשתמש בפריסה שמעודדת את המשתמשים להזיז את הראש כדי לחקור את המרחב. כדי לשנות את אילוץ ברירת המחדל של recommendedContentBoxInFullSpace, אפשר להחיל משתנה מותאם אישית שמבוסס על גודל, כמו SubspaceModifier.requiredSizeIn. כדי שההתנהגות תהיה בלתי מוגבלת, מגדירים את allowUnboundedSubspace = true.

קוראים ל-recommendedContentBoxInFullSpace באמצעות ה-Session הנוכחי כדי לקבל את המאפיינים הספציפיים האלה לפי הצורך. מקרה לדוגמה:

val session = LocalSession.current
session?.scene?.activitySpace?.recommendedContentBoxInFullSpace

הוספת מרחב משנה לאפליקציה

בדוגמת הקוד הבאה אפשר לראות איך מוסיפים את Subspace ואת PlanarEmbeddedSubspace לאפליקציה:

setContent {
    // This is a top-level subspace
    Subspace {
        SpatialPanel {
            MyComposable()
        }
    }
}

@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}

@Composable
private fun PrimaryPane() {
    // This is an embedded subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in the top-level Subspace
    PlanarEmbeddedSubspace {
        SpatialPanel {}
    }
}

לפרטים נוספים, אפשר לעיין במאמרי העזרה המלאים בנושא Subspace ו-PlanarEmbeddedSubspace.