首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在运行时将UiWidget创建为实体?

如何在运行时将UiWidget创建为实体?
EN

Stack Overflow用户
提问于 2020-07-18 13:05:10
回答 1查看 42关注 0票数 1

假设我创建了一个容器

代码语言:javascript
复制
let created = UiWidget::Container::<NoCustomUi, String, ()> {
    transform: UiTransformData::default(),
    background: None,
    children: Vec::new(),
};

我如何将它添加到世界中并取回它的实体?类似于:

代码语言:javascript
复制
let entity = world
    .create_entity()
    .with(container)
    .build();

但是它说“特征specs::world::comp::Component不是为amethyst_ui::prefab::UiWidget<amethyst_ui::prefab::NoCustomUi, std::string::String>实现的”。

我使用的是紫晶0.15版

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-19 06:43:50

UiWidget实际上不能直接添加到Entity中,因为它是通过Prefab加载的

您必须创建UiTransformUiTextamethyst::ui中少数几个实现Component的其他Struct之一,并将它们添加到Entity

代码语言:javascript
复制
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下的紫晶一书中找到更多关于如何做到这一点的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62964870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档