问题标签 [bevy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

rust - 直接将纹理添加到资产资源导致 gpu_alloc 错误

我正在从文件中加载纹理作为 aVec<u8>并将该数据转换为纹理,当我将该纹理添加到资产资源以获取 aHandle<Texture>时,它会导致两个错误,第一个来自日志记录系统并说gpu_alloc::block: Memory block wasn't deallocated第二个(我假设是相关的)是thread 'main' panicked at 'range end index 32896 out of range for slice of length 32768'。这一切似乎都源于这个代码块

知道我需要改变什么来解决这个问题吗?

0 投票
1 回答
467 浏览

rust - 使用 Handle 将资产加载到 Bevy 引擎中并在以后使用资产的正确方法?

我正在学习 Rust 和 Bevy 引擎,我想Font在整个应用程序生命周期内保持某些资产(例如 s)的加载。

在底部的函数setup_ui()中,我.clone()用来复制该资产。如果我不使用.clone(),我会收到错误消息:

我有两个问题:

  1. 我是Font在操作过程中复制整个这里.clone()吗?

  2. 这是保持资源加载并供以后使用的“正确”方法,还是有更好的方法来实现这一点,我不知道?

0 投票
0 回答
182 浏览

rust - 使用 Bevy 渲染 Blender / gltf 模型,包括颜色

我正在与Bevy一起迈出第一步,目标是“定居者”或“anno 18xx”类型的模拟。我有一个树模型,我从 Blender 导出为 gltf。这棵树有棕色的树干和绿色的叶子。我可以在基于 Web 的查看器中打开 gltf 文件,到目前为止一切看起来都很好。

在 Bevy 中,我设置了一个简单的相机、灯光……并且可以像这样加载树:

这工作正常。我可以看到颜色正确的树。但它是一个充满“世界”的“场景”。我想渲染许多具有不同变换的树,所以我尝试渲染“普通”网格。我发现模型是由两个网格组成的,所以我必须这样做:

这“有点”有效:我从 gltf 文件中丢失了颜色,必须手动设置它们。树干和树叶之间的相对位置被破坏了,所以我可能丢失了文件中定义的一些转换。

根据https://bevyengine.org/news/bevy-0-5/#top-level-gltf-asset,Gltf处理在 Bevy 0.5 中得到了改进,但我不明白使用它的预期方式是什么我的情况。

有人可以给我一个最简单的例子,说明如何在 Blender 中定义我的游戏资产(树、房子、栅栏……)并在 Bevy 中多次渲染导出的 gltf 吗?包括指定的颜色/材料?我认为在我上面展示的两种方法之间一定有一些东西,但我不明白。

0 投票
0 回答
233 浏览

bevy - Bevy 顶点彩色着色器

我是着色器的新手,我正在尝试在 Bevy 中构建一个顶点着色器。幸运的是,其中一个例子介绍了如何使用自定义着色器,并创建了一个顶点着色器,但不幸的是它不再显示光照!这是供参考的示例:https ://github.com/bevyengine/bevy/blob/main/examples/shader/mesh_custom_attribute.rs

我想使用示例中所示的自定义属性,但我仍然需要照明才能工作(正确着色的面)。任何帮助都非常感谢!

0 投票
1 回答
670 浏览

rust - 在 bevy-engine 中处理许多精灵的最快方法

我正在用 Rust 和 BevyEngine 构建一个元胞自动机可视化“游戏”。目前,在初始化世界时,我为每个单元生成一个精灵。在每次更新中,精灵的颜色会根据它是活着还是死去而改变。

问题是,当处理越来越大的地图时,精灵的数量会变得非常多。所以我想知道当我只在活细胞的位置生成一个精灵并在细胞死亡时将其移除时是否会更快。

所以我的问题是:如果我为每个网格位置生成所有精灵是否会更快,或者是仅在细胞存活时生成精灵并在细胞死亡时将其移除的更好方法。

0 投票
0 回答
42 浏览

rust - 如何创建两个窗口,第一个显示 OrthographicCameraBundle,第二个显示 UICameraBundle?

我查看了官方 bevy github 页面中的示例,并尝试将 multiple_windows 示例转换为适用于我的情况,但我能做的最好的事情是在原始窗口中显示 UICameraBundle 并在辅助窗口中显示 OrthographicCameraBundle . 我需要在游戏中的某个事件之后打开辅助窗口,所以这对我不起作用。

我认为这与示例如何将第二个摄像机连接到第二个窗口有关,因为简单地更改生成的摄像机类型不起作用。例如,当我将第一个窗口设置为显示 OrthographicCameraBundle 并将第二个窗口设置为显示 UICameraBundle 时,第一个窗口工作正常,但第二个窗口似乎显示的是 OrthographicCameraBundle 而不是 UICameraBundle,即使那不是相机类型我产生了。在线几乎没有关于此的文档,而且我对渲染的了解不足,无法理解示例中实际执行的操作,除非它可以工作。

如果有人可以帮助我,将不胜感激,因为我已经为此工作了几天,但无济于事。

0 投票
0 回答
154 浏览

rust - 在 Bevy 中显示许多精灵

我想在 Rust 中使用 Bevy 编写一个小游戏。如果所有精灵都是单独的SpriteBundle. 如何让一个实体包含并显示多个 Sprite?

我知道在 bevy-engine 中处理许多精灵的最快方法

0 投票
1 回答
145 浏览

rust - 点零调用 Rust/Bevy 中的计时器?

在 Bevy 书中,使用了以下代码:

timer.0name.0调用在做什么?这本书没有解决它,我看到它Timer有一个tick方法,所以.0这里在做什么,因为timer已经是一个Timer

0 投票
1 回答
277 浏览

rust - 编译 bevy_dylib v0.5.0 错误:与 `cc` 链接失败:退出状态:1

在刚升级到 Monterey 的 Mac 上,我在尝试cargo run一个简单的 Bevy 程序时得到以下信息。我已经重新安装了这里和其他地方推荐的 XCode CLT 。我试过弄乱一些cargo.yml,但没有成功。

cargo.yml 是这样的:

我刚从这周开始遇到这个。我很确定这个确切的代码在几周前编译得很好。任何帮助将不胜感激。

main.rs 看起来像

更新:

绝对与我机器上的环境有关,因为在不同的 macbook 上它运行良好。

0 投票
0 回答
63 浏览

alsa - 如何在 Nix 开发 shell 中配置构建输入包/依赖项?

我没有使用 NixOS,但我写了一个 flake,我用它来生成一个开发 shell 来构建一个Rust 项目(这实际上只是Bevy 存储库中的音频示例)。我的问题是尝试在 dev shell 中运行项目时遇到以下错误:

该项目的依赖项之一是需要 ALSA 的 Bevy crate,所以我假设问题是因为 dev shell 公开的 ALSA 包可能配置错误。我在我的实际系统上使用 PipeWire(我认为它也使用 ALSA 作为后端),我尝试将 ALSA 和 PipeWire 添加为薄片的 buildInputs 之一,但我不确定我应该如何在开发外壳。根据Bevy 存储库上的这个问题,至少对于基于 Arch 的发行版来说,这个问题的通常解决方法是安装 pipewire-alsa 包。我不确定在 Nix 开发 shell 的上下文中这样做的等价物是什么,因为在 nixpkgs 中没有可以添加到我的薄片中的 pipewire-alsa 包。话虽如此,我应该如何在开发外壳中配置 ALSA 或 PipeWire?