非官方 Bevy 作弊书00-01

源自 Introduction - Unofficial Bevy Cheat Book

有道软件翻译为主,手工调整润色,希望对像我这样的 英语不好的 Bevy 初学者有用


Introduction - Unofficial Bevy Cheat Book

非官方 Bevy 作弊书

这是Bevy 游戏引擎的参考书 (GitHub)。

它旨在以简洁的方式教授 Bevy 概念,帮助您提高工作效率并发现您需要的知识。

本书汇集了官方文档中通常未涵盖的大量社区智慧,使您无需再为其他人已经解决的问题而苦苦挣扎!

虽然它的目标是详尽无遗,但记录整个游戏引擎是一项艰巨的任务。我将时间集中在我认为社区最需要的事情上。

因此,无论是基础知识还是高级主题,仍然存在很多遗漏。尽管如此,我相信这本书将成为您的宝贵资源!

欢迎!愿这本书为您服务!

(别忘了 

 这本书的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 项目”定义为:

一旦您的贡献被上游接受,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 的各个功能领域:


List of Bevy Builtins - Unofficial Bevy Cheat Book

非官方 Bevy 作弊书

Bevy 内置列表

此页面是 Bevy 提供的所有重要内容的快速浓缩列表。

系统参数

这些都是可以用作系统参数的特殊类型。

(API文档中列出)

在常规系统中:

专有系统中:

您的函数最多可以有 16 个参数。如果您需要更多,请将它们分组到元组中以解决限制。元组最多可以包含 16 个成员,但可以无限嵌套。

在提取计划期间运行的系统还可以使用 Extract<T>, 来访问来自主世界而不是渲染世界的数据。T可以是任何只读系统参数类型。

资产

(有关使用资产的更多信息)

这些是 Bevy 默认注册的资产类型。

文件格式

这些是 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)支持以下后端:

平台后端(按优先级顺序)
LinuxVulkan, GLES3
WindowsDirectX 12, Vulkan, GLES3
macOSMetal
iOSMetal
AndroidVulkan, GLES3
WebWebGPU, WebGL2

在 GLES3 和 WebGL2 上,某些渲染器功能不受支持,并且性能较差。

WebGPU 是实验性的,很少有浏览器支持它。

时间表

在内部,Bevy 有以下内置时间表

  • Main:运行每个帧更新周期,以执行一般应用程序逻辑
  • ExtractSchedule:在 Main之后运行,将数据从主世界复制到渲染世界
  • Render:在 ExtractSchedule 之后运行,与下一次 Main 运行并行执行所有渲染/图形

该 Main 计划只是运行一系列其他计划:

第一次运行时(应用程序的第一帧更新):

每次运行时(通过资源MainScheduleOrder资源控制):

  • First:必须在每一帧开始时完成的任何初始化
  • PreUpdate:用于在用户逻辑之前运行的引擎内部系统
  • StateTransition:执行任何挂起的状态转换
  • RunFixedUpdateLoopFixedUpdate:根据需要多次运行FixedUpdate计划
  • Update:对于应该每一帧运行的所有用户逻辑(您的系统)
  • PostUpdate:用于在用户逻辑之后运行的引擎内部系统
  • Last:必须在每帧结束时完成的任何最终清理

FixedUpdate适用于应以固定时间步运行的所有用户逻辑(您的系统) 。

当您想要更改状态时,StateTransition会为您的状态运行OnEnter(...)/OnTransition(...)/OnExit(...) 时间表

Render时间表使用集合(RenderSet )Render进行组织:

  • ExtractCommands:从运行的系统应用延迟缓冲区ExtractSchedule
  • PreparePrepareFlush:在 GPU 上设置数据(缓冲区、纹理等)
  • QueueQueueFlush:生成要运行的渲染作业(通常是阶段项
  • PhaseSortPhaseSortFlush:排序和批处理阶段项目以实现高效渲染
  • RenderRenderFlush:执行渲染图以实际触发 GPU 执行工作
  • CleanupCleanupFlush:清除渲染世界中不应保留到下一帧的所有数据

如果需要,*Flush变体只是在每个步骤之后应用任何延迟缓冲区。

运行条件

去做

插件

去做

捆绑

Bevy 的内置捆绑类型,用于生成不同常见类型的实体。

(API文档中列出)

任何有最多 15个Component类型的元组都是有效的捆绑包。

一般的:

场景:

声音:

bevy 3D:

bevy 2D:

bevy UI 用户界面:

资源

(有关使用资源的更多信息)

配置资源

这些资源允许您更改 Bevy 各个部分的工作方式的设置。

这些可以在开始时插入,但也应该可以在运行时更改(从系统 

运行时不可修改的设置不使用资源表示。相反,它们是通过各自的插件进行配置的。

引擎资源

这些资源提供在运行时访问游戏引擎的不同功能。

如果您需要它们的状态,或者控制 Bevy 的各个部分,请从您的系统访问它们。这些资源都在主世界请参阅此处了解渲染世界中的资源

渲染世界资源

这些资源存在于渲染世界中。可以从渲染系统(在渲染阶段运行)访问它们。

  • MainWorld:(仅提取时间表!)从主世界访问数据
  • RenderGraph: Bevy 渲染图
  • PipelineCache:Bevy 的渲染管道管理器。用于存储应用程序使用的渲染管道,以避免多次重新创建它们。
  • TextureCache:Bevy 的临时纹理管理器。当您需要在渲染期间内部使用纹理时很有用。
  • DrawFunctions<P>:存储给定阶段项类型的绘制函数
  • RenderAssets<T>:包含当前加载的资产数据的 GPU 表示的句柄
  • DefaultImageSamplerImage:资源纹理的默认采样器
  • FallbackImage:虚拟 1x1 像素白色纹理。当您没有可用纹理时,对于通常需要纹理的着色器很有用。

渲染世界中还有许多其他资源,这里没有提及,要么是因为它们是 Bevy 渲染算法的内部资源,要么是因为它们只是主世界中等效资源的提取副本。

底层wgpu资源

使用这些资源,您可以直接访问wgpu用于控制 GPU 的 API。这些在主世界和渲染世界中都可用。

输入处理资源

这些资源代表不同输入设备的当前状态。从您的系统中读取它们 以处理用户输入

事件

(有关处理事件的更多信息)

输入事件

这些事件会在输入设备的活动上触发。读取它们以[处理用户输入][cb::input]。

  • MouseButtonInput:鼠标按钮状态的变化
  • MouseWheel:滚动多个像素或行 ( MouseScrollUnit)
  • MouseMotion:鼠标的相对移动(前一帧的像素),与操作系统指针/光标无关
  • CursorMoved:操作系统鼠标指针/光标的新位置
  • KeyboardInput:键盘按键状态的变化(按键,而不是文本)
  • ReceivedCharacter:来自操作系统的 Unicode 文本输入(正确处理用户的语言和布局)
  • Ime:从IME输入Unicode文本(支持不同脚本的高级文本输入)
  • TouchInput:手指触摸触摸屏的状态发生变化
  • GamepadEvent:游戏手柄或其任何按钮或轴的状态发生变化
  • GamepadRumbleRequest:发送这些事件来控制游戏手柄的隆隆声
  • TouchpadMagnify:笔记本电脑触摸板上的捏合缩放手势 (macOS)
  • TouchpadRotate:笔记本电脑触摸板上的两指旋转手势 (macOS)

引擎事件

与 Bevy 应用程序正常运行时发生的各种内部事件相关的事件。

系统和控制事件

来自操作系统/窗口系统的事件,或者控制Bevy。

成分

各个组件类型的完整列表过于具体,无法在此处列出。

请参阅:(API 文档中的列表)


非官方 Bevy 作弊书

bevy教程

本书的本章包含教程。教程从头到尾按逻辑顺序教您知识。如果您正在寻找一些东西来指导您学习 Bevy,也许其中一些对您有用。

本书的其余部分旨在用作参考,因此您可以跳转到您想要了解的特定主题。

本章的第一个教程“引导教程”简单地按照建议的学习顺序组织了本书中的所有主题,从基础知识到高级概念。如果您刚刚学习 Bevy 并且不知道如何进步,您可以使用它作为主目录(左侧栏)的替代。如果您是 Bevy 新手,您可以从这里开始寻找解决方法。

如果您想要更窄范围的示例来教您如何解决特定问题,可以在Bevy Cookbook 章节中找到这些示例。

您还应该查看 Bevy 的官方示例集。引擎的几乎每个区域都有一些东西,尽管它们通常只显示 API 的简单用法,而没有太多解释。


Guided Tour - Unofficial Bevy Cheat Book

非官方 Bevy 作弊书

bevy新手?指导教程!

欢迎来到bevy!:) 我们很高兴您加入我们的社区!

本页将引导您阅读本书,帮助您全面了解如何与 Bevy 合作。这些主题按照对学习有意义的顺序排列:从基础到高级。

这只是一个帮助您导航的建议。随意浏览这本书并阅读您感兴趣的任何内容。主目录(左侧边栏)旨在为任何技能水平的 Bevy 用户提供参考。


请务必查看Bevy 官方示例。如果您需要帮助,请使用GitHub Discussions,或者欢迎加入我们在Discord中聊天并寻求帮助。

如果您遇到问题,请务必查看 “常见陷阱”一章,看看本书是否对您有帮助。此处记录了 Bevy 社区成员遇到的一些最常见问题的解决方案。

基本

这些是使用 Bevy 的绝对要素。每一个 Bevy 项目,即使是一个简单的项目,都需要您熟悉这些概念。

可以想象,仅使用这些知识,您就可以制作类似简单的游戏即兴游戏或原型之类的东西。不过,随着项目的发展,您可能很快就需要了解更多信息。

下一步

您可能需要学习其中大部分主题才能制作一个不平凡的 Bevy 项目。当你对基础知识有信心后,你应该学习这些。

中级的

这些是更专业的主题。您可能需要其中一些,具体取决于您的项目。

高级的

这些主题适用定位于专业的情况。如果您想更多地了解 Bevy 内部工作原理、使用自定义功能扩展引擎或使用 Bevy 执行其他高级操作,您可以学习它们。


(本节结束,见2)

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值