زیرفضا بخشی از فضای سهبعدی در برنامه شما است که در آن میتوانید مدلهای سهبعدی قرار دهید، چیدمانهای سهبعدی بسازید، و به محتوای دوبعدی عمق اضافه کنید. فضای فرعی فقط زمانی رندر میشود که فضاسازی فعال باشد. در Home Space یا در دستگاههای غیرواقعیت گسترده، هر کدی در آن زیرفضا نادیده گرفته میشود.
برای اطلاعات بیشتر درباره چیدمانهای فضایی و مؤلفههایی که میتوانید در زیرفضا استفاده کنید، به مؤلفههای فضاییشده مراجعه کنید.
درباره سلسلهمراتب زیرفضاها
Subspace سطح بالا بیرونیترین زیرفضایی است که توسط برنامه شما فراخوانی میشود.
هر فراخوانی به روش 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 را بااستفاده از جلسه فعلی فراخوانی کنید تا
این ابعاد خاص را درصورت نیاز دریافت کنید. مثال زیر را ببینید:
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 ببینید.