源自 Introduction - Unofficial Bevy Cheat Book
有道软件翻译为主,手工调整润色,希望对像我这样的 英语不好的 Bevy 初学者有用
Introduction - Unofficial Bevy Cheat Book
非官方 Bevy 作弊书
这是Bevy 游戏引擎的参考书 (GitHub)。
它旨在以简洁的方式教授 Bevy 概念,帮助您提高工作效率并发现您需要的知识。
本书汇集了官方文档中通常未涵盖的大量社区智慧,使您无需再为其他人已经解决的问题而苦苦挣扎!
虽然它的目标是详尽无遗,但记录整个游戏引擎是一项艰巨的任务。我将时间集中在我认为社区最需要的事情上。
因此,无论是基础知识还是高级主题,仍然存在很多遗漏。尽管如此,我相信这本书将成为您的宝贵资源!
欢迎!愿这本书为您服务!
(别忘了
Star
这本书的GitHub 存储库,并考虑捐赠)
如何使用这本书
本书的页面并不是为了按顺序阅读而设计的。每个页面涵盖一个独立的主题。随意跳到您感兴趣的任何内容。
如果您有想要了解的特定主题,可以从目录(侧边栏)或使用搜索功能(位于顶部栏中)找到它。
章节概述页面将让您大致了解本书的结构。
每个页面上的文本都会链接到其他页面,您可以在其中了解文本中提到的其他内容。这可以帮助你快速浏览这本书。
如果您是 Bevy 新手,或者想要更多引导体验,请尝试 引导游览教程。它将帮助您按照对学习有意义的顺序浏览本书,从初级主题到高级主题。
Bevy内置页面是一份简洁的备忘单,其中包含有关 Bevy 提供的类型和功能的有用信息。
推荐的额外资源
Bevy 拥有丰富的官方代码示例。
查看bevy-assets,获取社区制作的资源。
我们的社区非常友好和乐于助人。欢迎加入Bevy Discord聊天、提问或参与该项目!
如果您想查看一些使用 Bevy 制作的游戏,请参阅itch.io 或Bevy Assets。
这本书是最新的吗?
Bevy 的开发速度非常快,大约每三个月就会发布新的主要版本。每个版本都会带来很多变化,因此保持本书的更新可能是一个重大挑战。
为了减轻维护负担,该项目的政策是本书可能包含针对不同版本的 Bevy 的内容。但是,不允许在同一页面上混合 Bevy 版本。
在每个页面的顶部,您将看到上次更新的版本。该页面上的所有内容必须与所述 Bevy 版本相关。
支持我
GitHub 赞助商 帕特隆 比特币
如果您喜欢这本书,请考虑赞助我。谢谢你!❤️
我愿意不断改进和维护这本书,为Bevy社区提供高质量的独立学习资源。
支持贝维
GitHub 赞助商
如果您喜欢 Bevy 游戏引擎,您应该考虑向该项目捐款。
执照
版权所有 © 2021-2023 Ida (IyesGames)
本书中的所有代码均在 MIT-0 许可证下提供。您也可以选择在常规 MIT 许可证下使用它。
本书的文本是在 CC BY-NC-SA 4.0下提供的。
例外:如果用于“官方 Bevy 项目”贡献的目的,则可以在MIT-0 许可证下使用本书的全部内容。
“官方 Bevy 项目”定义为:
- Git 存储库的内容托管在https://github.com/bevyengine/bevy
- Git 存储库的内容托管在https://github.com/bevyengine/bevy-website
- bevyengine.org网站上公开可见的任何内容
一旦您的贡献被上游接受,MIT-0 许可证就会生效。
为向官方 Bevy 项目做出贡献而创建的 GitHub Forks 和 Pull 请求具有以下许可例外:只要工作等待上游审核(Pull 请求打开),即可免除 CC BY-NC-SA 4.0 的归属要求)。如果上游拒绝您的贡献,您将有 1 个月的时间来遵守 CC BY-NC-SA 4.0 许可证的完整条款或删除您的作品。如果上游接受您的贡献,则适用 MIT-0 许可证。
贡献
本书的开发托管在GitHub上。
请向 GitHub 提交问题以获取任何错误/令人困惑/误导性的信息,以及您想要添加到书中的新内容的建议。
贡献被接受,但有一些限制。
有关所有详细信息,请参阅贡献部分。
稳定性警告
Bevy 仍然是一个新的实验性游戏引擎!2020年8月才公开!
虽然改进正在以令人难以置信的速度发生,而且开发也很活跃,但 Bevy 还没有时间成熟。
没有稳定性保证,并且经常发生重大变化!
通常,适应新版本的变化并不难,但您已被警告!
Chapter Overview - Unofficial Bevy Cheat Book
章节概述
Bevy内置页面是一份简洁的备忘单,其中包含有关 Bevy 提供的类型和功能的有用信息。
Bevy教程章节提供了您可以从头到尾遵循的教程/指南。
Bevy Cookbook提供更多独立/范围狭窄的示例,教您如何解决特定问题。
本书的其余部分旨在作为参考,涵盖与 Bevy 合作的不同方面。请随意浏览本书,了解您感兴趣的任何主题。在本书的每一页上,每当提到其他主题时,都会链接到相关页面或官方 API 文档。
如果您想要引导式体验,或按相对难度(从初级到高级)浏览本书,请尝试引导式教程页面。它以逻辑顺序推荐学习主题。
本书有以下一般章节:
- Bevy 设置提示:项目设置建议、工具和插件推荐
- 常见陷阱:社区遇到的常见问题的解决方案
- Bevy on Different Platforms:有关使用特定平台/操作系统的信息
要了解如何在 Bevy 中编程,请参阅以下章节:
- Bevy核心编程框架:ECS+App框架,一切的基础
- 编程模式:固执己见的建议、模式、习语
- Bevy Render (GPU) Framework:使用 GPU 和 Bevy 渲染
以下章节涵盖了 Bevy 的各个功能领域:
- 游戏引擎基础知识
- 一般图形功能
- 使用 2D
- 使用 3D
- 输入处理
- 窗口管理
- 资产管理
- 声音的
- Bevy UI 框架
List of Bevy Builtins - Unofficial Bevy Cheat Book
Bevy 内置列表
此页面是 Bevy 提供的所有重要内容的快速浓缩列表。
- 系统参数
- 资产
- 文件格式
- GLTF 资产标签
- 着色器导入
- wgpu后端
- 时间表
- 运行条件
- 插件
- 捆绑
- 资源(配置)
- 资源(引擎用户)
- 资源(输入)
- 事件(输入)
- 事件(引擎)
- 事件(系统/控制)
- 成分
系统参数
这些都是可以用作系统参数的特殊类型。
(API文档中列出)
在常规系统中:
- Commands:使用命令操作ECS
- Query(最多可包含 15 种类型的元组):访问实体和组件
- Res:对资源的共享访问
- ResMut:对资源的独占(可变)访问
Option>
:共享访问可能不存在的资源
Option>
:对可能不存在的资源的独占(可变)访问
- Local:系统本地数据
- EventReader:接收事件
- EventWriter:发送事件
- &World:只读直接访问ECS World
- ParamSet<...>(最多 8 个参数):解决不兼容的系统参数之间的冲突
- Deferred:自定义“延迟突变”,类似于
Commands
,但用于你自己的东西
- RemovedComponents: 去除检测
- Gizmos:一种在屏幕上绘制线条和形状以用于调试和开发目的的方法
- Diagnostics:一种向 Bevy报告测量/调试数据以进行跟踪和可视化的方法
- SystemName:系统的名称(字符串),可能对调试有用
- ParallelCommands
Commands
:当您自己进行并行处理时可以使用抽象
- WorldId:系统运行所在世界的世界ID
- ComponentIdFor:获取给ComponentId定组件类型的
- Entities:低级 ECS 元数据:所有实体
- Components:低级 ECS 元数据:所有组件
- Bundles:低级 ECS 元数据:所有捆绑包
- Archetypes:低级 ECS 元数据:所有原型
- SystemChangeTick:低级 ECS 元数据:用于更改检测的勾选
- NonSend:对非Send(仅限主线程)数据的共享访问
- NonSendMut:对非Send(仅限主线程)数据的独占访问
Option>
:共享访问可能不存在的非(仅限主线程)数据Send
Option>
:独占访问可能不存在的非(仅限主线程)数据Send
- StaticSystemParam:通用系统抽象的帮助器,以避免生命周期注释
- 包含任何这些类型的元组,最多 16 个成员
在专有系统中:
- &mut World:完全直接访问ECS世界
- Local:系统本地数据
- SystemState
:模拟常规系统,让您轻松访问世界数据。 P
是系统参数。
- QueryState
:允许您对世界执行查询,类似于Query 常规系统。
您的函数最多可以有 16 个参数。如果您需要更多,请将它们分组到元组中以解决限制。元组最多可以包含 16 个成员,但可以无限嵌套。
在提取计划期间运行的系统还可以使用 Extract, 来访问来自主世界而不是渲染世界的数据。T
可以是任何只读系统参数类型。
资产
(有关使用资产的更多信息)
这些是 Bevy 默认注册的资产类型。
- Image:像素数据,用作2D和3D渲染的纹理;还包含SamplerDescriptor纹理过滤设置
- TextureAtlas:2D“Sprite Sheet”定义单个较大图像中的子图像
- Mesh:3D 网格(几何数据),包含顶点属性(如位置、UV、法线)
- Shader:GPU 着色器代码,采用受支持的语言之一 (WGSL/SPIR-V/GLSL)
- ColorMaterial:基本“2D 材质”:包含颜色,可选图像
- StandardMaterial:支持基于物理的渲染的“3D 材质”
- AnimationClip:单个动画序列的数据,可与AnimationPlayer
- Font:用于文本渲染的字体数据
- Scene:由要实例化的文字 ECS 实体组成的场景
- DynamicScene:由动态类型和反射组成的场景
- Gltf: GLTF Master Asset : GLTF 文件全部内容的索引
- GltfNode:场景中的逻辑 GLTF 对象
- GltfMesh:逻辑GLTF 3D模型,由多个
GltfPrimitive
s组成
- GltfPrimitive:要渲染的单个单元,包含要使用的网格和材质
- AudioSource:音频数据
bevy_audio
- FontAtlasSet:(内部用于文本渲染)
- SkinnedMeshInverseBindposes:(骨骼动画内部使用)
这些是 Bevy 支持的资产文件格式(资产加载器)。可以使用货物功能 cargo features可以使用货物功能启用/禁用对每一项的支持。有些是默认启用的,有些则不是。
图像格式(作为资产加载Image):
格式 |
Cargo特征 |
默认? |
文件扩展名 |
PNG |
"png" |
是的 |
.png |
HDR 高动态范围 |
"hdr" |
是的 |
.hdr |
KTX2 |
"ktx2" |
是的 |
.ktx2 |
KTX2+zstd |
"ktx2", "zstd" |
是的 |
.ktx2 |
JPEG |
"jpeg" |
不 |
.jpg ,.jpeg |
WebP |
"webp" |
不 |
.webp |
OpenEXR |
"exr" |
不 |
.exr |
TGA |
"tga" |
不 |
.tga |
PNM |
"pnm" |
不 |
.pam , .pbm , .pgm ,.ppm |
BMP |
"bmp" |
不 |
.bmp |
DDS |
"dds" |
不 |
.dds |
KTX2+zlib |
"ktx2", "zlib" |
不 |
.ktx2 |
Basis |
"basis-universal" |
不 |
.basis |
音频格式(作为资产加载AudioSource):
格式 |
Cargo 特征 |
默认? |
文件扩展名 |
OGG Vorbis |
"vorbis" |
是的 |
.ogg , .oga ,.spx |
FLAC |
"flac" |
不 |
.flac |
WAV |
"wav" |
不 |
.wav |
MP3 |
"mp3" |
不 |
.mp3 |
3D 资源(模型或场景)格式:
格式 |
Cargo特征 |
默认? |
文件扩展名 |
GLTF |
"bevy_gltf" |
是的 |
.gltf ,.glb |
着色器格式(作为资产加载Shader):
格式 |
Cargo特征 |
默认? |
文件扩展名 |
WGSL |
不适用 |
是的 |
.wgsl |
GLSL |
"shader_format_glsl" |
不 |
.vert , .frag ,.comp |
SPIR-V |
"shader_format_spirv" |
不 |
.spv |
字体格式(作为资源加载Font):
格式 |
Cargo特征 |
默认? |
文件扩展名 |
TrueType |
不适用 |
是的 |
.ttf |
OpenType |
不适用 |
是的 |
.otf |
Bevy 场景:
格式 |
文件扩展名 |
RON-serialized scene 序列化场景 |
.scn ,.scn.ron |
有非官方插件可用于添加对更多文件格式的支持。
GLTF 资产标签
用于引用 GLTF 子资产的资产路径标签。
支持以下资产标签({}
是数字索引):
Scene{}
: GLTF 场景 作为 BevyScene
Node{}
: GLTF 节点作为GltfNode
Mesh{}
:GLTF 网格作为GltfMesh
Mesh{}/Primitive{}
: GLTF 原始 作为 BevyMesh
Mesh{}/Primitive{}/MorphTargets
:GLTF 基元的变形目标动画数据
Texture{}
:GLTF 纹理作为 BevyImage
Material{}
: GLTF 材料 作为 BevyStandardMaterial
DefaultMaterial
:如上所述,如果 GLTF 文件包含没有索引的默认材质
Animation{}
: GLTF 动画 作为 BevyAnimationClip
Skin{}
:GLTF 网格皮肤作为 BevySkinnedMeshInverseBindposes
着色器导入
等待去做
wgpu后端
wgpu(和 以后的 Bevy)支持以下后端:
平台 |
后端(按优先级顺序) |
Linux |
Vulkan, GLES3 |
Windows |
DirectX 12, Vulkan, GLES3 |
macOS |
Metal |
iOS |
Metal |
Android |
Vulkan, GLES3 |
Web |
WebGPU, WebGL2 |
在 GLES3 和 WebGL2 上,某些渲染器功能不受支持,并且性能较差。
WebGPU 是实验性的,很少有浏览器支持它。
时间表
在内部,Bevy 有以下内置时间表:
- Main:运行每个帧更新周期,以执行一般应用程序逻辑
- ExtractSchedule:在
Main之
后运行,将数据从主世界复制到渲染世界
- Render:在 ExtractSchedule 之后运行,与下一次
Main
运行并行执行所有渲染/图形
该 Main
计划只是运行一系列其他计划:
第一次运行时(应用程序的第一帧更新):
- PreStartup 启动前
- Startup 启动时
- PostStartup 启动后
每次运行时(通过资源MainScheduleOrder资源控制):
- First:必须在每一帧开始时完成的任何初始化
- PreUpdate:用于在用户逻辑之前运行的引擎内部系统
- StateTransition:执行任何挂起的状态转换
- RunFixedUpdateLoopFixedUpdate:根据需要多次运行FixedUpdate计划
- Update:对于应该每一帧运行的所有用户逻辑(您的系统)
- PostUpdate:用于在用户逻辑之后运行的引擎内部系统
- Last:必须在每帧结束时完成的任何最终清理
FixedUpdate
适用于应以固定时间步运行的所有用户逻辑(您的系统) 。
当您想要更改状态时,StateTransition会为您的状态运行
OnEnter(...)/OnTransition(...)/OnExit(...) 时间表
Render时间表使用集合(RenderSet )Render进行组织:
ExtractCommands
:从运行的系统应用延迟缓冲区ExtractSchedule
Prepare
/ PrepareFlush
:在 GPU 上设置数据(缓冲区、纹理等)
Queue
/ QueueFlush
:生成要运行的渲染作业(通常是阶段项)
PhaseSort
/ PhaseSortFlush
:排序和批处理阶段项目以实现高效渲染
Render
/ RenderFlush
:执行渲染图以实际触发 GPU 执行工作
Cleanup
/ CleanupFlush
:清除渲染世界中不应保留到下一帧的所有数据
如果需要,*Flush变体只是在每个步骤之后应用任何延迟缓冲区。
运行条件
去做
插件
去做
捆绑
Bevy 的内置捆绑类型,用于生成不同常见类型的实体。
(API文档中列出)
任何有最多 15个Component类型的元组都是有效的捆绑包。
一般的:
- SpatialBundle:包含必需的变换和可见性 组件,这些组件必须包含在需要渲染或层次结构的所有实体上
- TransformBundle:仅包含变换类型,
SpatialBundle
的子集
- VisibilityBundle:仅包含可见性类型,
SpatialBundle
的子集
场景:
- SceneBundle:用于生成场景
- DynamicSceneBundle:用于生成动态场景
声音:
- AudioBundleAudioSource:从资源中播放[音频][cb::audio]
- SpatialAudioBundle:播放AudioSource资产中的位置音频
- AudioSourceBundle:从自定义数据源/流播放音频
- SpatialAudioSourceBundle:从自定义数据源/流播放位置音频
bevy 3D:
- Camera3dBundle:3D相机,可以使用透视(默认)或正交投影
- TemporalAntiAliasBundle:将其添加到 3D 相机以启用 TAA
- ScreenSpaceAmbientOcclusionBundle:将其添加到 3D 相机以启用 SSAO
- MaterialMeshBundle:3D 对象/基元:网格和用于绘制它的自定义材质
- PbrBundle:
MaterialMeshBundle
使用默认的基于物理的材质 ( StandardMaterial)
- DirectionalLightBundle:3D 定向光(如太阳)
- PointLightBundle:3D 点光源(如灯或蜡烛)
- SpotLightBundle:3D 聚光灯(如投影仪或手电筒)
bevy 2D:
- Camera2dBundle:2D相机,采用正投影+其他2D特殊配置
- SpriteBundle:2D精灵(Image资源类型)
- SpriteSheetBundle:2D精灵(TextureAtlas资源类型)
- MaterialMesh2dBundle:2D 形状,具有自定义网格和材质(类似于 3D 对象)
- Text2dBundle:要在 2D 世界(而不是 UI)中绘制的文本
bevy UI 用户界面:
- NodeBundle: 空节点元素(如 HTML
)
- ButtonBundle:按钮元素
- ImageBundle:图像元素(Image资产类型)
- AtlasImageBundle:图像元素(TextureAtlas资产类型)
- TextBundle:文本元素
资源
(有关使用资源的更多信息)
配置资源
这些资源允许您更改 Bevy 各个部分的工作方式的设置。
这些可以在开始时插入,但也应该可以在运行时更改(从系统 ):
- ClearColor:全局渲染器背景色,用于在每帧开始时清除窗口
- GlobalVolume:播放音频的总音量
- AmbientLight:全局渲染器“假照明”,使阴影看起来不会太暗/黑
- Msaa:多样本抗锯齿的全局渲染器设置(某些平台可能仅支持值 1 和 4)
- UiScale:使所有 UI 更大/更小的全局缩放值
- GizmoConfig:控制小工具的渲染方式
- WireframeConfig:全局切换使所有内容都渲染为线框
- GamepadSettings:游戏手柄输入设备设置,例如操纵杆死区和按钮灵敏度
- WinitSettings:操作系统窗口后端的设置,包括更新循环/电源管理设置
- TimeUpdateStrategy:用于控制Time如何更新
- Schedules:存储所有计划,允许您在运行时注册其他附加功能
- MainScheduleOrder:将运行每个帧更新的计划序列
运行时不可修改的设置不使用资源表示。相反,它们是通过各自的插件进行配置的。
引擎资源
这些资源提供在运行时访问游戏引擎的不同功能。
如果您需要它们的状态,或者控制 Bevy 的各个部分,请从您的系统访问它们。这些资源都在主世界。请参阅此处了解渲染世界中的资源。
- Time:全局时间相关信息(当前帧增量时间、启动以来的时间等)
- FixedTime:跟踪下一次固定更新之前的剩余时间
- AssetServer:控制资产系统:加载资产、查看加载状态等。
- Assets:包含给定类型的加载资源的实际数据
- State:状态类型的当前值
- NextState:用于对到另一个状态的转换进行排队
- Gamepads:跟踪所有当前检测到(连接)的游戏手柄设备的 ID
- SceneSpawner:直接控制在主应用程序世界中生成场景
- FrameCount:总帧数
- ScreenshotManager:用于请求截取/保存窗口的屏幕截图
- AppTypeRegistry:访问反射类型注册表
- AsyncComputeTaskPool:运行后台CPU任务的任务池
- ComputeTaskPool:主应用程序计划(所有系统)运行的任务池
- IoTaskPool:运行后台 I/O 任务的任务池(如资源加载)
- WinitWindows(非发送
winit
):每个窗口后端的原始状态
- NonSendMarker:虚拟资源,确保系统始终在主线程上运行
渲染世界资源
这些资源存在于渲染世界中。可以从渲染系统(在渲染阶段运行)访问它们。
- MainWorld:(仅提取时间表!)从主世界访问数据
- RenderGraph: Bevy 渲染图
- PipelineCache:Bevy 的渲染管道管理器。用于存储应用程序使用的渲染管道,以避免多次重新创建它们。
- TextureCache:Bevy 的临时纹理管理器。当您需要在渲染期间内部使用纹理时很有用。
- DrawFunctions
:存储给定阶段项类型的绘制函数
- RenderAssets:包含当前加载的资产数据的 GPU 表示的句柄
- DefaultImageSamplerImage:资源纹理的默认采样器
- FallbackImage:虚拟 1x1 像素白色纹理。当您没有可用纹理时,对于通常需要纹理的着色器很有用。
渲染世界中还有许多其他资源,这里没有提及,要么是因为它们是 Bevy 渲染算法的内部资源,要么是因为它们只是主世界中等效资源的提取副本。
底层wgpu资源
使用这些资源,您可以直接访问wgpu
用于控制 GPU 的 API。这些在主世界和渲染世界中都可用。
- RenderDevice:GPU设备,用于创建渲染/计算的硬件资源
- RenderQueue:用于向硬件提交工作的GPU队列
- RenderAdapter:物理GPU硬件的句柄
- RenderAdapterInfo:有关 Bevy 运行的 GPU 硬件的信息
这些资源代表不同输入设备的当前状态。从您的系统中读取它们 以处理用户输入。
- Input:键盘按键状态,作为二进制输入值
- Input:鼠标按钮状态,作为二进制输入值
- Input:游戏手柄按钮,作为二进制输入值
- Axis:模拟轴游戏手柄输入(操纵杆和触发器)
- Axis:游戏手柄按钮,表示为模拟轴值
- Touches:当前所有手指触摸触摸屏的状态
- Gamepads:所有连接的GamepadID的注册表
事件
(有关处理事件的更多信息)
这些事件会在输入设备的活动上触发。读取它们以[处理用户输入][cb::input]。
- MouseButtonInput:鼠标按钮状态的变化
- MouseWheel:滚动多个像素或行 ( MouseScrollUnit)
- MouseMotion:鼠标的相对移动(前一帧的像素),与操作系统指针/光标无关
- CursorMoved:操作系统鼠标指针/光标的新位置
- KeyboardInput:键盘按键状态的变化(按键,而不是文本)
- ReceivedCharacter:来自操作系统的 Unicode 文本输入(正确处理用户的语言和布局)
- Ime:从IME输入Unicode文本(支持不同脚本的高级文本输入)
- TouchInput:手指触摸触摸屏的状态发生变化
- GamepadEvent:游戏手柄或其任何按钮或轴的状态发生变化
- GamepadRumbleRequest:发送这些事件来控制游戏手柄的隆隆声
- TouchpadMagnify:笔记本电脑触摸板上的捏合缩放手势 (macOS)
- TouchpadRotate:笔记本电脑触摸板上的两指旋转手势 (macOS)
引擎事件
与 Bevy 应用程序正常运行时发生的各种内部事件相关的事件。
- AssetEvent:当资产数据被添加/修改/删除时,由 Bevy 发送;可用于检测资产的变化
- HierarchyEvent:当实体父/子发生变化时由 Bevy 发送
- AppExit:告诉 Bevy 关闭
系统和控制事件
来自操作系统/窗口系统的事件,或者控制Bevy。
- RequestRedraw:在不连续刷新的应用程序中,在睡觉前请求再更新一次
- FileDragAndDrop:用户将文件拖放到我们的应用程序中
- CursorEntered:操作系统鼠标指针/光标进入我们的窗口之一
- CursorLeft:操作系统鼠标指针/光标退出了我们的窗口之一
- WindowCloseRequested:操作系统想要关闭我们的一个窗口
- WindowCreated:新的应用程序窗口打开
- WindowClosed:Bevy 窗口已关闭
- WindowDestroyed:操作系统窗口在窗口关闭后释放/删除
- WindowFocused:我们的一个窗口现在已聚焦
- WindowMoved:操作系统/用户移动了我们的一个窗口
- WindowResized:操作系统/用户调整了我们的一个窗口的大小
- WindowScaleFactorChanged:我们的一个窗口已更改其 DPI 缩放系数
- WindowBackendScaleFactorChanged:操作系统报告窗口的 DPI 缩放因子发生变化
成分
各个组件类型的完整列表过于具体,无法在此处列出。
请参阅:(API 文档中的列表)
bevy教程
本书的本章包含教程。教程从头到尾按逻辑顺序教您知识。如果您正在寻找一些东西来指导您学习 Bevy,也许其中一些对您有用。
本书的其余部分旨在用作参考,因此您可以跳转到您想要了解的特定主题。
本章的第一个教程“引导教程”简单地按照建议的学习顺序组织了本书中的所有主题,从基础知识到高级概念。如果您刚刚学习 Bevy 并且不知道如何进步,您可以使用它作为主目录(左侧栏)的替代。如果您是 Bevy 新手,您可以从这里开始寻找解决方法。
如果您想要更窄范围的示例来教您如何解决特定问题,可以在Bevy Cookbook 章节中找到这些示例。
您还应该查看 Bevy 的官方示例集。引擎的几乎每个区域都有一些东西,尽管它们通常只显示 API 的简单用法,而没有太多解释。
Guided Tour - Unofficial Bevy Cheat Book
bevy新手?指导教程!
欢迎来到bevy!:) 我们很高兴您加入我们的社区!
本页将引导您阅读本书,帮助您全面了解如何与 Bevy 合作。这些主题按照对学习有意义的顺序排列:从基础到高级。
这只是一个帮助您导航的建议。随意浏览这本书并阅读您感兴趣的任何内容。主目录(左侧边栏)旨在为任何技能水平的 Bevy 用户提供参考。
请务必查看Bevy 官方示例。如果您需要帮助,请使用GitHub Discussions,或者欢迎加入我们在Discord中聊天并寻求帮助。
如果您遇到问题,请务必查看 “常见陷阱”一章,看看本书是否对您有帮助。此处记录了 Bevy 社区成员遇到的一些最常见问题的解决方案。
基本
这些是使用 Bevy 的绝对要素。每一个 Bevy 项目,即使是一个简单的项目,都需要您熟悉这些概念。
可以想象,仅使用这些知识,您就可以制作类似简单的游戏即兴游戏或原型之类的东西。不过,随着项目的发展,您可能很快就需要了解更多信息。
- bevy设置技巧
- Bevy 编程框架
- ECS简介
- 实体、组件
- 捆绑
- 资源
- 系统
- 应用程序生成器
- 查询
- 命令
- 游戏引擎基础知识
- 一般图形功能
- bevy资产管理公司
- 输入处理
- 窗口管理
- 声音的
下一步
您可能需要学习其中大部分主题才能制作一个不平凡的 Bevy 项目。当你对基础知识有信心后,你应该学习这些。
- Bevy 编程框架
- 事件
- 系统执行顺序
- 运行条件
- 系统集合
- 当地资源
- 时间表
- 状态
- 插件
- 变化检测
- 游戏引擎基础知识
- 输入处理
- bevy资产管理
- bevy设置技巧
- 声音的:
这些是更专业的主题。您可能需要其中一些,具体取决于您的项目。
- Bevy 编程框架
- 游戏引擎基础知识
- 一般图形功能
- 输入处理
- bevy资产管理
- 编程模式
- 窗口管理
- 声音的
高级的
这些主题适用定位于专业的情况。如果您想更多地了解 Bevy 内部工作原理、使用自定义功能扩展引擎或使用 Bevy 执行其他高级操作,您可以学习它们。
- Bevy 编程框架
- 编程模式
- bevy设置技巧
- 定制 Bevy(货箱 cargo crates 和功能)
- 使用前沿 Bevy(主要)
- Bevy 渲染 (GPU) 框架
(本节结束,见2)