البدء السريع
1) إضافة الحزمة
[dependencies]
univis_ui = "0.3.0"
2) تطبيق بسيط
use bevy::prelude::*;
use univis_ui::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(UnivisUiPlugin)
.add_systems(Startup, setup)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn(Camera2d);
commands
.spawn((
URootUi::screen(),
UNode {
width: UVal::Percent(1.0),
height: UVal::Percent(1.0),
background_color: Color::srgb(0.08, 0.1, 0.14),
..default()
},
ULayout {
display: UDisplay::Flex,
justify_content: UJustifyContent::Center,
align_items: UAlignItems::Center,
..default()
},
))
.with_children(|root| {
root.spawn(UTextLabel::new("Hello Univis UI"));
});
}
3) اختيارات الجذر
URootUi::screen()لمسار الواجهة الثابتة على الشاشة والعناصر المرتبطة بها.URootUi::world_2d(size)لواجهة في فضاء العالم ثنائية الأبعاد.URootUi::world_3d(size)لواجهة في فضاء العالم تستخدم مسار المواد ثلاثي الأبعاد.URootUi::world_2d_fit_content()وURootUi::world_3d_fit_content()لقياس حجم الجذر العالمي من المحتوى الداخلي.UVal::Pxيعني وحدات UI منطقية، لا pixels فعلية للشاشة.UiCanvasSize::Viewportيتبع مساحة رؤية الكاميرا المحلولة.UiCanvasSize::FitContent { min, max }يقيس مساحة الرسم المنطقية من المحتوى ثم يطبّق الحدود عند الحاجة.- الحجم الفيزيائي في فضاء العالم يُشتق بالعلاقة:
world_size = canvas_size * meters_per_unit
4) ماذا يضيف UnivisUiPlugin؟
- التفاعل:
UnivisInteractionPlugin - المحرك:
UnivisEnginePlugin - النمط والخطوط والأيقونات:
UnivisUiStylePlugin - الوحدات الجاهزة:
UnivisWidgetPlugin
5) ملاحظات مهمة مباشرة
UnivisWidgetPluginيضيف الآن أنظمة Runtime المدمجة الخاصة بـUTextFieldوUBadgeتلقائيًا.UnivisScrollViewPluginمضاف تلقائيًا داخلUnivisWidgetPlugin.- التفاعل يحسم الكاميرا من كل
URootUi. - في المشاهد متعددة الكاميرات يُفضّل ربط الجذر صراحة عبر
UiCameraRef::Entity. UScreenRootوUWorldRootموجودان فقط كطبقات توافق مهجورة على مسارات صريحة مثلunivis_ui::layout::layout_system::{UScreenRoot, UWorldRoot}.- اضبط
meters_per_unitصراحة عندما تحتاج حجمًا فيزيائيًا محددًا لجذور العالم. - إذا أردت قائمة إعداد موجزة ومسار أمثلة بحسب المهمة، فانتقل إلى إعداد الإضافات وأولى الأمثلة.
إذا كنت تركّب سطح widgets ضيقًا من دون UnivisWidgetPlugin، فما يزال بإمكانك إضافة UnivisTextFieldPlugin أو UnivisBadgePlugin يدويًا.
6) وضع الحزم المباشرة (متقدم)
use bevy::prelude::*;
use univis_ui_engine::prelude::*;
use univis_ui_engine::UnivisEnginePlugin;
use univis_ui_interaction::interaction::UnivisInteractionPlugin;
use univis_ui_style::style::UnivisUiStylePlugin;
use univis_ui_widgets::widget::UnivisWidgetPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(UnivisUiStylePlugin)
.add_plugins(UnivisEnginePlugin)
.add_plugins(UnivisInteractionPlugin)
.add_plugins(UnivisWidgetPlugin)
.run();
}
أمثلة مرتبطة
صفحات ترحيل مرتبطة
نقاط الدخول الرسمية في API
univis_ui::UnivisUiPluginunivis_ui::preludeunivis_ui::layout::layout_system::{UScreenRoot, UWorldRoot}لمسار التوافق القديم فقطunivis_ui_engine::layout::layout_system::URootUiunivis_ui_engine::layout::univis_node::{UNode, ULayout}
إلى أين بعد ذلك؟
- المثال المرتبط:
responsive_layout_test - صفحة الإعداد: إعداد الإضافات وأولى الأمثلة
- فهرس
API: مرجع الواجهة العامة - صفحة الترحيل: ترحيل الجذور إلى
URootUi