如何在运行时将 UiWidget 创建为实体?
How do I create a UiWidget at runtime as an entity?
假设我创建了一个容器
let created = UiWidget::Container::<NoCustomUi, String, ()> {
transform: UiTransformData::default(),
background: None,
children: Vec::new(),
};
如何将它添加到世界并取回它的实体?类似于:
let entity = world
.create_entity()
.with(container)
.build();
但是它说“特征 specs::world::comp::Component
没有为 amethyst_ui::prefab::UiWidget<amethyst_ui::prefab::NoCustomUi, std::string::String>
实现”。
我正在使用 Amethyst v0.15
UiWidget
实际上不能直接添加到 Entity
,因为它是通过 Prefab
加载的
您必须从实现 Component
的 amethyst::ui
创建 UiTransform
, UiText
或少数其他 Struct
之一,并将它们添加到 Entity
let ui_transform = UiTransform::new(
String::from("demo_text"), // id
Anchor::Middle, // anchor
Anchor::Middle, // pivot
0f32, // x
0f32, // y
0f32, // z
100f32, // width
30f32, // height
);
let ui_text = UiText::new(
font_handle, // font
String::from("Hello World"), // text
[1.0, 1.0, 1.0, 0.5], // color
25f32, // font_size
LineMode::Single, // line mode
Anchor::Middle, // alignment
);
world.create_entity()
.with(ui_transform)
.with(ui_text)
.build();
您可以在 User Interface section.
下的 Amethyst 一书中找到有关如何执行此操作的更多信息
假设我创建了一个容器
let created = UiWidget::Container::<NoCustomUi, String, ()> {
transform: UiTransformData::default(),
background: None,
children: Vec::new(),
};
如何将它添加到世界并取回它的实体?类似于:
let entity = world
.create_entity()
.with(container)
.build();
但是它说“特征 specs::world::comp::Component
没有为 amethyst_ui::prefab::UiWidget<amethyst_ui::prefab::NoCustomUi, std::string::String>
实现”。
我正在使用 Amethyst v0.15
UiWidget
实际上不能直接添加到 Entity
,因为它是通过 Prefab
您必须从实现 Component
的 amethyst::ui
创建 UiTransform
, UiText
或少数其他 Struct
之一,并将它们添加到 Entity
let ui_transform = UiTransform::new(
String::from("demo_text"), // id
Anchor::Middle, // anchor
Anchor::Middle, // pivot
0f32, // x
0f32, // y
0f32, // z
100f32, // width
30f32, // height
);
let ui_text = UiText::new(
font_handle, // font
String::from("Hello World"), // text
[1.0, 1.0, 1.0, 0.5], // color
25f32, // font_size
LineMode::Single, // line mode
Anchor::Middle, // alignment
);
world.create_entity()
.with(ui_transform)
.with(ui_text)
.build();
您可以在 User Interface section.
下的 Amethyst 一书中找到有关如何执行此操作的更多信息