1

想象一下我创建了一个容器

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

4

1 回答 1

1

UiWidget实际上不能直接添加到Entity,因为它意味着通过加载Prefab

您必须创建UiTransform,或从该工具中创建UiText的少数其他工具之一并将它们添加到Structamethyst::uiComponentEntity

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();

您可以在“用户界面”部分下的 Amethyst 书中找到有关如何执行此操作的更多信息。

于 2020-08-18T22:43:50.170 回答