虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?
虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?
code review!
参考笔记:
1.虚幻引擎5-Unreal Engine笔记之GameMode
、关卡(Level)
和 关卡蓝图(Level Blueprint)
的关系
2.虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?
目录
- 虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?
- 目录
- 1.什么时候新建GameModeBase,什么时候新建关卡?
- 1. 什么时候新建基于
GameModeBase
或GameMode
的蓝图?- 场景与用途
- 操作步骤
- 示例场景
- 时机
- 2. 什么时候新建关卡(Level)?
- 场景与用途
- 操作步骤
- 示例场景
- 时机
- 注意事项
- 3. 什么时候新建关卡蓝图(Level Blueprint)?
- 场景与用途
- 操作步骤
- 示例场景
- 时机
- 注意事项
- 4. 三者的关系与职责划分
- 协作关系
- 5. 实际应用示例
- 示例 1:射击游戏开发
- 示例 2:冒险游戏开发
- 示例 3:测试环境
- 6. 常见问题与解决方法
- 总结
- 1. 什么时候新建基于
- 顺序是先新建关卡,再新建GameMode蓝图?还是新建GameMode蓝图,再新建关卡?
- 1. 先新建关卡,再新建 GameMode 蓝图
- 适用场景
- 优点
- 操作流程
- 示例场景
- 时机
- 2. 先新建 GameMode 蓝图,再新建关卡
- 适用场景
- 优点
- 操作流程
- 示例场景
- 时机
- 3. 两种顺序的对比
- 4. 实际建议:哪种顺序更常见?
- 推荐流程(适用于大多数项目)
- 5. 实际应用示例
- 示例 1:射击游戏(先 GameMode 蓝图,再关卡)
- 示例 2:冒险游戏(先关卡,再 GameMode 蓝图)
- 6. 常见问题与解决方法
- 总结
- 1. 先新建关卡,再新建 GameMode 蓝图
1.什么时候新建GameModeBase,什么时候新建关卡?
1. 什么时候新建基于 GameModeBase
或 GameMode
的蓝图?
场景与用途
- 定义游戏核心规则和全局逻辑:当需要定义游戏的全局规则、机制或状态管理逻辑时,应该创建一个基于
GameModeBase
或GameMode
的蓝图。GameMode 负责管理游戏的整体行为,例如玩家生成、计分规则、游戏胜负条件、关卡切换等。 - 跨关卡复用:如果希望某些逻辑可以在多个关卡中复用(例如相同的计分系统或游戏模式),GameMode 蓝图是合适的,因为它可以在项目设置或 World Settings 中应用到不同关卡。
- 多人游戏逻辑:在多人游戏中,GameMode 负责服务器端的逻辑,并通过 GameState 同步数据到客户端,因此需要创建一个 GameMode 蓝图来管理这些核心逻辑。
- 选择
GameModeBase
还是GameMode
?GameModeBase
:这是一个轻量级的基类,适合简单的游戏或自定义需求较少的场景。它不包含一些默认功能(例如默认的玩家重生逻辑),更灵活,适合从头开始自定义。GameMode
:这是一个更完整的基类,继承自GameModeBase
,包含了一些内置功能(例如默认的玩家重生、比赛开始/结束逻辑),适合需要快速开发的场景,尤其是射击游戏或竞技类游戏。
操作步骤
- 右键点击内容浏览器,选择"Blueprint Class",基类选择
GameModeBase
或GameMode
。 - 通常在项目初期或需要定义游戏核心机制时执行这一操作。
示例场景
- 正在开发一个射击游戏,需要定义玩家得分达到一定值时结束游戏的规则。可以创建一个基于
GameModeBase
的蓝图(如MyGameMode
),设置默认 Pawn 和 PlayerController,并编写计分逻辑。 - 正在开发一个多人游戏,需要管理玩家登录、退出和状态同步。这时需要创建一个基于
GameMode
的蓝图,利用其内置的多人游戏支持功能。
时机
- 在项目初期,确定游戏类型和核心规则时。
- 需要为游戏添加新的模式或规则时(例如从单人模式扩展到多人模式)。
- 需要管理全局游戏状态或玩家行为时。
2. 什么时候新建关卡(Level)?
场景与用途
- 创建游戏中的一个独立场景或区域:当需要为游戏添加一个新的游戏环境、地图或场景时,应该新建一个关卡(Level)。关卡是 UE5 中用于组织游戏世界的容器,包含地形、静态网格体、灯光、触发器等内容。
- 不同游戏阶段或模式:如果需要为游戏的不同部分创建独立的场景(例如主菜单关卡、第一章关卡、竞技场关卡),每个场景都可以是一个单独的关卡。
- 测试特定功能:在开发过程中,可能需要一个独立的测试关卡来测试某个机制或功能。
操作步骤
- 在内容浏览器中右键,选择"Level",或者通过菜单栏的"File > New Level"创建。
- 通常会选择一个模板(例如 Default、Empty Level、VR-Basic 等)来快速搭建基础环境。
示例场景
- 正在开发一个冒险游戏,需要创建不同的章节地图(例如森林关卡、沙漠关卡)。每个地图都可以是一个独立的关卡。
- 需要一个主菜单界面作为一个单独的关卡,用于游戏启动时显示选项。
时机
- 项目初期,搭建游戏世界或地图时。
- 游戏开发过程中,需要添加新的场景或地图时。
- 需要测试特定功能或内容时,创建一个临时测试关卡。
注意事项
- 每个关卡可以关联一个特定的 GameMode(通过 World Settings 设置),也可以使用项目默认的 GameMode。
- UE5 支持世界分区(World Partition),可以在一个关卡中管理大型开放世界,但对于较小的独立场景,通常还是会创建多个关卡。
3. 什么时候新建关卡蓝图(Level Blueprint)?
场景与用途
- 处理特定关卡的本地逻辑:当需要为某个特定关卡添加独特的逻辑或行为时,可以使用关卡蓝图。关卡蓝图是嵌入在特定关卡中的脚本,用于控制该关卡中的对象或事件。
- 与关卡中特定Actor交互:如果需要控制关卡中的特定对象(例如开关门、触发陷阱、播放剧情动画),关卡蓝图是合适的工具,因为它可以直接访问和操作关卡中的 Actor。
- 关卡特定事件响应:例如玩家进入某个区域时触发特定效果,或者关卡加载时执行某些初始化操作。
操作步骤
- 关卡蓝图不需要手动"新建":每个关卡都会自动关联一个关卡蓝图。可以在关卡编辑器的工具栏中点击"Blueprints > Open Level Blueprint"来打开和编辑当前关卡的关卡蓝图。
- 如果新建了一个关卡,它会自动生成一个对应的关卡蓝图,只需要打开并编辑即可。
示例场景
- 在一个关卡中设计了一个机关,当玩家靠近时触发陷阱。可以在关卡蓝图中编写逻辑,监听玩家位置并触发陷阱效果。
- 在一个关卡中需要播放开场动画,并在动画结束后通知 GameMode 更新游戏状态。可以在关卡蓝图中实现动画播放,并通过
Get Game Mode
调用 GameMode 的函数。
时机
- 在某个关卡已经创建并需要添加特定逻辑时。
- 需要处理关卡中特定对象或事件的行为时。
- 关卡设计完成后,需要添加交互或动态效果时。
注意事项
- 关卡蓝图的作用范围仅限于当前关卡,无法直接复用到其他关卡。
- 如果逻辑可能在多个关卡中复用,建议将其放入 GameMode 或创建可复用的蓝图组件,而不是写在关卡蓝图中。
- 在多人游戏中,关卡蓝图的逻辑可能仅在客户端运行,容易导致同步问题,关键逻辑应尽量放在 GameMode 中。
4. 三者的关系与职责划分
类型 | 用途与职责 | 创建时机 | 操作方式 |
---|---|---|---|
GameMode 蓝图 | 定义游戏核心规则、全局逻辑、跨关卡复用 | 项目初期或需要新游戏模式时 | 右键内容浏览器,选择"Blueprint Class",基类选 GameModeBase 或 GameMode |
关卡 (Level) | 创建游戏场景、地图或独立环境 | 需要新场景或测试环境时 | 右键内容浏览器,选择"Level",或"File > New Level" |
关卡蓝图 (Level Blueprint) | 处理特定关卡的本地逻辑、对象交互、事件响应 | 关卡创建后需要添加特定逻辑时 | 通过关卡编辑器工具栏"Blueprints > Open Level Blueprint"编辑 |
协作关系
- GameMode 蓝图 提供游戏的全局框架和规则,适用于所有关卡或特定关卡(通过 World Settings 指定)。
- 关卡 (Level) 是游戏世界的容器,包含具体的场景内容,并可以关联特定的 GameMode。
- 关卡蓝图 是特定关卡的脚本,处理本地逻辑,可以通过
Get Game Mode
与 GameMode 交互,例如调用 GameMode 的函数或访问其变量。
5. 实际应用示例
示例 1:射击游戏开发
- 新建 GameMode 蓝图:在项目初期,创建一个基于
GameModeBase
的MyGameMode
蓝图,设置默认 Pawn 和 PlayerController,定义计分规则和游戏结束逻辑。 - 新建关卡:创建多个关卡,例如
ArenaLevel1
和ArenaLevel2
,分别代表不同的竞技场地图。 - 编辑关卡蓝图:在
ArenaLevel1
的关卡蓝图中,编写逻辑以检测玩家进入特定区域时生成敌人,并通过MyGameMode
更新得分。
示例 2:冒险游戏开发
- 新建 GameMode 蓝图:创建一个基于
GameMode
的AdventureGameMode
蓝图,管理任务进度和玩家状态。 - 新建关卡:创建多个关卡,例如
ForestLevel
和CaveLevel
,分别代表冒险的不同区域。 - 编辑关卡蓝图:在
ForestLevel
的关卡蓝图中,编写逻辑以触发特定剧情动画,并通过AdventureGameMode
更新任务状态。
示例 3:测试环境
- 新建关卡:创建一个临时测试关卡
TestLevel
,用于测试某个角色或机制。 - 新建 GameMode 蓝图:如果测试需要特定的游戏模式,可以创建一个临时的
TestGameMode
蓝图,并通过 World Settings 应用到TestLevel
。 - 编辑关卡蓝图:在
TestLevel
的关卡蓝图中,添加测试相关的逻辑,例如生成测试对象或记录测试数据。
6. 常见问题与解决方法
- 问题:不知道是该用 GameMode 还是关卡蓝图?
- 解决:如果逻辑是全局的或需要在多个关卡复用,使用 GameMode 蓝图;如果逻辑是特定于某个关卡的本地行为,使用关卡蓝图。
- 问题:新建关卡后找不到关卡蓝图?
- 解决:每个关卡自动关联一个关卡蓝图,通过关卡编辑器的"Blueprints > Open Level Blueprint"可以找到并编辑。
- 问题:GameMode 蓝图未生效?
- 解决:确保在 Project Settings 或 World Settings 中正确设置了 GameMode,并检查蓝图是否已编译和保存。
总结
- 新建 GameMode 蓝图:当需要定义游戏核心规则、全局逻辑或跨关卡复用的机制时,右键内容浏览器选择"Blueprint Class",基类选
GameModeBase
或GameMode
。 - 新建关卡:当需要创建新的游戏场景、地图或测试环境时,通过内容浏览器或"File > New Level"创建。
- 编辑关卡蓝图:当需要为特定关卡添加本地逻辑或对象交互时,通过关卡编辑器打开并编辑关卡蓝图。
2.顺序是先新建关卡,再新建GameMode蓝图?还是新建GameMode蓝图,再新建关卡?
在 Unreal Engine 5 (UE5) 中,新建关卡(Level)和新建 GameMode 蓝图的顺序取决于项目开发流程、具体需求以及工作习惯。通常情况下,这两者的创建顺序并没有严格的限制,因为它们是相对独立的:关卡是游戏世界的容器,而 GameMode 蓝图定义游戏规则,可以在任何时候创建并关联到关卡。然而,根据开发阶段和逻辑依赖关系,某些情况下一种顺序可能更自然或更高效。
下面将详细分析在什么情况下应该先新建关卡再新建 GameMode 蓝图,或者先新建 GameMode 蓝图再新建关卡,并提供建议和实际应用场景。
1. 先新建关卡,再新建 GameMode 蓝图
适用场景
- 关卡驱动的开发流程:如果在项目初期更关注游戏场景或地图的设计,希望先搭建关卡环境,然后再根据关卡的具体需求定义游戏规则,这种顺序更适合。例如,可能先设计了一个竞技场关卡,然后根据竞技场的特点(例如地图大小、玩家数量)决定 GameMode 的具体逻辑(如计分规则、玩家重生点)。
- 测试特定关卡需求:如果已经创建了一个关卡,并发现默认的 GameMode 无法满足该关卡的特殊需求,可以针对性地创建一个新的 GameMode 蓝图。例如,一个关卡需要独特的游戏模式(如生存模式),而其他关卡使用默认的 GameMode。
- 迭代开发:在项目中后期,可能需要为一个新关卡添加特定的游戏规则,这时会先创建新关卡,然后根据需求创建对应的 GameMode 蓝图。
优点
- 基于关卡需求定制 GameMode:先有关卡,可以更直观地了解关卡的特点和需求,从而设计更贴合关卡的 GameMode 逻辑。例如,关卡中有特定的触发区域或对象,可能需要 GameMode 提供相应的支持。
- 避免过早定义规则:如果 GameMode 规则尚未明确,先创建关卡可以让开发者先专注于场景设计,避免过早锁定游戏机制。
操作流程
- 新建关卡:在内容浏览器中右键选择"Level",或通过"File > New Level"创建一个新关卡。
- 设计关卡内容:添加地形、静态网格体、灯光等,初步构建游戏环境。
- 新建 GameMode 蓝图:根据关卡需求,右键内容浏览器选择"Blueprint Class",基类选择
GameModeBase
或GameMode
,创建自定义 GameMode 蓝图。 - 关联 GameMode:在关卡的 World Settings 中,将 GameMode Override 设置为新建的 GameMode 蓝图。
示例场景
- 开发一个射击游戏,先创建了一个竞技场关卡
ArenaLevel
,发现需要一个特殊的 GameMode 来支持"夺旗模式"。于是针对这个关卡需求创建了一个CaptureFlagGameMode
蓝图,并在ArenaLevel
的 World Settings 中应用它。 - 开发一个冒险游戏,先创建了一个关卡
PuzzleLevel
,其中包含复杂的谜题机制。之后创建了一个PuzzleGameMode
蓝图,专门管理谜题进度和玩家状态。
时机
- 项目初期,优先关注场景设计时。
- 为特定关卡添加独特游戏规则时。
- 已有多个关卡,需要为新关卡创建专属 GameMode 时。
2. 先新建 GameMode 蓝图,再新建关卡
适用场景
- 规则驱动的开发流程:如果在项目初期更关注游戏的核心机制和规则,希望先定义游戏玩法,然后再根据规则设计关卡,这种顺序更适合。例如,可能先设计了一个 GameMode 来支持"团队死亡竞赛"模式,然后根据该模式的需求设计合适的竞技场关卡。
- 全局规则优先:如果希望所有关卡或大部分关卡共享相同的游戏规则,可以先创建 GameMode 蓝图,并在项目设置中将其设为默认 GameMode,之后创建的关卡都会自动应用该 GameMode。
- 快速原型开发:在快速迭代或测试游戏机制时,可以先创建一个简单的 GameMode 蓝图,定义基本规则,然后创建简单的测试关卡来验证规则是否有效。
优点
- 统一游戏规则:先定义 GameMode 可以确保游戏的核心机制在所有关卡中一致,避免因关卡设计不同而导致规则冲突。
- 指导关卡设计:GameMode 的规则可以为关卡设计提供方向。例如,GameMode 定义了玩家重生点数量,关卡设计时就可以根据这一规则布置重生位置。
- 便于测试:先有 GameMode,可以快速创建多个测试关卡来验证不同场景下规则的表现。
操作流程
- 新建 GameMode 蓝图:右键内容浏览器选择"Blueprint Class",基类选择
GameModeBase
或GameMode
,创建自定义 GameMode 蓝图。 - 设置默认 GameMode:在 Project Settings 的"Maps & Modes"中,将默认 GameMode 设置为新建的 GameMode 蓝图(可选,也可以稍后在 World Settings 中为特定关卡覆盖)。
- 新建关卡:在内容浏览器中右键选择"Level",或通过"File > New Level"创建一个新关卡。
- 验证或调整:根据需要,在新关卡的 World Settings 中确认或调整 GameMode 设置。
示例场景
- 开发一个赛车游戏,先创建了一个
RacingGameMode
蓝图,定义了比赛规则(例如圈数、计时、胜负条件)。然后根据这些规则创建多个赛道关卡(如Track1
和Track2
),确保关卡设计符合 GameMode 的需求。 - 在项目初期创建了一个
SurvivalGameMode
蓝图,定义了生存模式的核心机制(例如资源管理、敌人生成)。之后创建多个测试关卡,验证该 GameMode 在不同环境下的表现。
时机
- 项目初期,优先定义游戏核心机制时。
- 游戏规则明确,且希望所有关卡共享相同规则时。
- 需要快速测试游戏机制时。
3. 两种顺序的对比
顺序 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
先新建关卡,再新建 GameMode 蓝图 | 关卡驱动开发、特定关卡独特需求、迭代开发 | 基于关卡需求定制 GameMode,避免过早锁定规则 | 可能导致规则不统一,需后期调整 |
先新建 GameMode 蓝图,再新建关卡 | 规则驱动开发、全局规则优先、快速原型 | 统一游戏规则,指导关卡设计,便于测试 | 可能因规则限制关卡设计,需后期修改规则 |
4. 实际建议:哪种顺序更常见?
- 没有固定顺序,取决于开发流程:UE5 并不强制要求特定的创建顺序,GameMode 蓝图和关卡的创建是独立的。可以根据团队习惯或项目需求选择任意顺序。
- 常见做法:先 GameMode 蓝图,再关卡:在许多项目中,开发者倾向于先定义 GameMode 蓝图,因为游戏规则和机制通常是项目的基础,先明确规则可以为关卡设计提供清晰的方向。此外,先创建 GameMode 蓝图并在 Project Settings 中设为默认,可以让后续创建的关卡自动应用该 GameMode,减少手动配置的工作量。
- 灵活调整:在实际开发中,GameMode 和关卡的创建往往是迭代的。可能先创建一个简单的 GameMode 和测试关卡,然后随着项目进展不断添加新的关卡和 GameMode 蓝图。
推荐流程(适用于大多数项目)
- 项目初期:先创建一个基础的 GameMode 蓝图,定义游戏的核心规则,并将其设为默认 GameMode(在 Project Settings 中)。
- 创建初始关卡:创建一个或多个测试关卡,验证 GameMode 的逻辑是否符合预期。
- 迭代开发:根据需求创建更多关卡,并为特定关卡创建新的 GameMode 蓝图(如果需要),通过 World Settings 覆盖默认 GameMode。
5. 实际应用示例
示例 1:射击游戏(先 GameMode 蓝图,再关卡)
- 背景:开发一个射击游戏,核心机制是团队死亡竞赛。
- 步骤:
- 先创建
TeamDeathMatchGameMode
蓝图,定义团队计分、玩家重生、游戏结束条件等规则。 - 在 Project Settings 中将
TeamDeathMatchGameMode
设为默认 GameMode。 - 创建多个竞技场关卡(如
Arena1
、Arena2
),自动应用该 GameMode。 - 如果某个关卡需要特殊模式(例如"夺旗"),再为该关卡创建新的 GameMode 蓝图并在 World Settings 中覆盖。
- 先创建
示例 2:冒险游戏(先关卡,再 GameMode 蓝图)
- 背景:开发一个冒险游戏,关卡设计先行。
- 步骤:
- 先创建关卡
ForestLevel
,设计森林环境和谜题机关。 - 发现需要特定的游戏规则来管理谜题进度,于是创建
PuzzleGameMode
蓝图,定义谜题状态和玩家交互逻辑。 - 在
ForestLevel
的 World Settings 中将 GameMode 设置为PuzzleGameMode
。 - 后续创建其他关卡时,可以复用
PuzzleGameMode
,或根据需要创建新的 GameMode 蓝图。
- 先创建关卡
6. 常见问题与解决方法
- 问题:不确定先创建哪个?
- 解决:如果项目重点是游戏机制,先创建 GameMode 蓝图;如果重点是场景设计,先创建关卡。初期可以先创建简单的 GameMode 和测试关卡,之后再调整。
- 问题:创建顺序影响开发吗?
- 解决:通常不会影响,因为 GameMode 和关卡可以随时关联(通过 Project Settings 或 World Settings)。只需确保在测试或运行关卡时,正确的 GameMode 已关联。
- 问题:GameMode 未应用到关卡?
- 解决:检查 Project Settings 中的默认 GameMode,或关卡的 World Settings 中的 GameMode Override 是否正确设置。
总结
- 先新建关卡,再新建 GameMode 蓝图:适用于关卡驱动的开发流程,或为特定关卡定制 GameMode 时。优点是 GameMode 可基于关卡需求设计,但可能导致规则不统一。
- 先新建 GameMode 蓝图,再新建关卡:适用于规则驱动的开发流程,或希望统一游戏机制时。优点是规则先行,指导关卡设计,便于测试和复用。
- 推荐:通常先创建 GameMode 蓝图并设为默认,再创建关卡,这样可以减少配置工作量并确保规则一致。但具体顺序可以根据项目需求和团队习惯灵活调整。
相关文章:
虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?
虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡? code review! 参考笔记: 1.虚幻引擎5-Unreal Engine笔记之GameMode、关卡(Level) 和 关卡蓝图(Level Blueprint)的关系 2.虚幻引擎…...
[IMX] 04.定时器 - Timer
目录 1.周期中断定时器 - EPIT 1.1.工作模式 1.2.配置寄存器 - EPIT_CR 1.3.状态寄存器 - EPIT_SR 1.4.加载寄存器 - EPIT_LR 1.5.比较寄存器 - EPIT_CMPR 1.6.计数寄存器 - EPIT_CNR 2.通用定时器 - GPT 2.1. 时钟源 2.2.模块结构 2.3.工作模式 2.4.配置寄存器 - …...
前端 vue + element-ui 框架从 0 - 1 搭建
1. 安装node 地址: Node.js — 在任何地方运行 JavaScript 2. 安装 vue 2.1 执行安装命令 npm uninstall -g vue-cli npm install -g vue/cli 安装最新的vue3版本 2.2 使用vue 脚手架 搭建项目 vue create project_name 2.2.1 注意 项目名称不能包…...
【IDEA】删除/替换文件中所有包含某个字符串的行
目录 前言 正则表达式 示例 使用方法 前言 在日常开发中,频繁地删除无用代码或清理空行是不可避免的操作。许多开发者希望找到一种高效的方式,避免手动选中代码再删除的繁琐过程。 使用正则表达式是处理字符串的一个非常有效的方法。 正则表达式 …...
算法刷题(Java与Python)2.数组、列表
目录 Java的数组 数组介绍 注意事项 Python的列表 列表介绍 Python 的列表和 Java 的 ArrayList 一样吗? 例题1 代码分析 Java代码 Python代码 对比代码 例题2 代码分析 Java代码 Python代码 对比代码 例题三 Java代码 Python代码 代码对比 Jav…...
uniapp打包H5,输入网址空白情况
由于客户预算有限,最近写了两个uniapp打包成H5的案例,总结下面注意事项 1. 发行–网站-PCWeb或手机H5按钮,输入名称,网址 点击【发行】,生成文件 把这个给后端,就可以了 为什么空白呢 最重要一点…...
JavaScript 中使用 Elasticsearch 的正确方式,第一部分
作者:来自 Elastic Jeffrey Rengifo 讲解如何用 JavaScript 创建一个可用于生产环境的 Elasticsearch 后端。 想获得 Elastic 认证?看看下一期 Elasticsearch 工程师培训什么时候开始吧! Elasticsearch 拥有大量新功能,能帮助你…...
每日一道leetcode(增加版)
901. 股票价格跨度 - 力扣(LeetCode) 题目 设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今…...
排序复习/下(C语言版)
目录 1.快速排序(hoare法) 单趟: 整体: 代码优化: 编辑三数取中代码: 小区间优化代码: hoare法疑问解答: 2.快速排序(挖坑法) 3.快速排序&#x…...
Vue百日学习计划Day33-35天详细计划-Gemini版
总目标: 在 Day 33-35 理解 Vue 组件从创建到销毁的完整生命周期,熟练掌握 Composition API 中主要的生命周期钩子,并知道在不同阶段执行哪些操作。 所需资源: Vue 3 官方文档 (生命周期钩子): https://cn.vuejs.org/guide/essentials/lifecycle.html你…...
Apidog MCP服务器,连接API规范和AI编码助手的桥梁
#作者:曹付江 文章目录 1.了解 MCP2.什么是 Apidog MCP 服务器?3.Apidog MCP 服务器如何工作4.利用人工智能改变开发工作流程5.设置 Apidog MCP 服务器: 分步指南5.高级功能和提示5.1 使用 OpenAPI 规范5.2.多个项目配置5.3.安全最佳实践5.4…...
统计客户端使用情况,使用es存储数据,实现去重以及计数
这篇文件的重点在tshark、filebeat、和logstash。 需求:统计客户使用的客户端版本 实现工具:tshark 1.10.14,filebeat 8.17.0,logstash 8.17.0,elasticsearch 8.17.0,kibana 8.17.0 总体设计:…...
Git基础面试题
git的rm命令与系统的rm命令有什么区别 git rm 和系统的 rm (在 Windows 上是 del) 命令都用于删除文件,但它们在 Git 仓库的上下文中作用有所不同: 系统 rm (或 del) 命令: 作用: 直接从文件系统中删除文件。Git 的感知ÿ…...
conda 的常用命令
好的,下面为你介绍conda的常用命令: 环境管理 # 创建新环境 conda create -n env_name python3.8# 激活环境 conda activate env_name# 查看所有环境 conda env list# 复制环境 conda create -n new_env --clone old_env# 删除环境 conda remove -n en…...
PLC双人舞:profinet转ethernet ip网关奏响施耐德与AB的协奏曲
PLC双人舞:ethernet ip转profinet网关奏响施耐德与AB的协奏曲 案例分析:施耐德PLC与AB PLC的互联互通 在现代工业自动化中,设备之间的互联互通至关重要。本案例旨在展示如何通过北京倍讯科技的EtherNet/IP转Modbus网关,将施耐德P…...
百度OCR:证件识别
目录 一、编写目的 二、准备工作 2.1 OCR密钥 三、代码实现 3.1 配置文件 3.2 请求接收封装 3.3 请求响应封装 3.4 服务类参数初始化 3.5 服务类实现 3.6 解析结果 3.7 定义Web接口 四 测试效果 五、总结 欢迎来到盹猫🐱的博客 本篇文章主要介绍了 [百…...
纯前端实现图文识别 OCR
Tesseract.js Tesseract.js 是一个基于 Google Tesseract OCR 引擎的 JavaScript 库,利用 WebAssembly 技术将的 OCR 引擎带到了浏览器中。它完全运行在客户端,无需依赖服务器,适合处理中小型图片的文字识别。 基本使用 以下示例展示了如何…...
2025.05.01【Barplot】柱状图的多样性绘制
Custom color A few examples showing how to custom barplot color. Horizontal barchart It makes sense to make your barchart horizontal: group labels are now much easier to read 文章目录 Custom colorHorizontal barchart 探索Barplot的奥秘Barplot基础什么是Barp…...
在资源受限环境下,移动端如何实现流畅动画?如何在内存、CPU、GPU、网络等多种限制条件下,依然保持动画高帧率、低延迟、不卡顿?
在日常生活中,移动设备已经成为不可或缺的工具。从社交、购物到游戏、教育,几乎所有的应用场景都依赖于移动终端的计算和显示能力。然而,随着用户体验的不断提升需求,动画成为了界面交互中不可忽视的一环。动画不仅提升了视觉吸引…...
HJ10 字符个数统计【牛客网】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ10 字符个数统计 一、题目描述 二、测试用例 三、解题思路 基本思路: 建立字符串的散列表,然后统计不同字符个数具体思路: 遍历字符串的字…...
关键点检测算法-RTMPose
一、网络框架(top-down模式) 二、各部分内容 1、骨干网络 对于网络而言,CXPset太大,可以换成starnet 2、一个卷积层 7x7的卷积核对性能提升最大 3、一个全连接层 将一维关键点表示扩展到由超参数控制的所需维度。 4、一个用…...
云原生安全:错误策略S3存储桶ACL设置为Everyone:FullControl
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 ——从基础到实践的深度解析 1. 基础概念 S3存储桶与ACL Amazon S3(Simple Storage Service)是AWS提供的对象存储服务,支持存储和检索任意规模的数据。ACL(访问控制列表…...
Axure疑难杂症:垂直菜单展开与收回(4大核心问题与专家级解决方案)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:垂直菜单展开与收回 主要内容:超长菜单实现、展开与收回bug解释、Axure9版本限制等问题解…...
图漾相机错误码解析(待补充)
文章目录 1.相机错误码汇总2.常见报错码2.1 -1001报错2.1.1 没有找到相机2.1.2 SDK没有进行初始化 2.2 -1005报错2.2.1 跨网段打开相机2.2.2 旧版本SDK在软触发失败后提示的报错2.2.3 相机初始化上电时报错2.2.4 USB相机被占用 2.3 -1009报错2.3.1 相机本身不支持改属性 2.4 -1…...
SpringBoot 中文转拼音 Pinyin4j库 拼音转换 单据管理 客户管理
介绍 在客户管理系统中部分客户的名字会有生僻字为了沟通时候不叫错客户的名称,因此决定将客户名称的拼音一起返回给前端,也可以直接交给前端去处理。这里介绍后端的做法 Pinyin4j 是一个用于将汉字转换为拼音的 Java 库。在需要对中文文本进行拼音转换…...
使用 Whisper 生成视频字幕:从提取音频到批量处理
生成视频字幕是许多视频处理任务的核心需求。本文将指导你使用 OpenAI 的 Whisper 模型为视频文件(如电视剧《Normal People》或电影《花样年华》)生成字幕(SRT 格式)。我们将从提取音频开始,逐步实现字幕生成…...
Kotlin Compose Button 实现长按监听并实现动画效果
想要实现长按按钮开始录音,松开发送的功能。发现 Button 这个控件如果去监听这些按下,松开,长按等事件,发现是不会触发的,究其原因是 Button 已经提前消耗了这些事件所以导致,这些监听无法被触发。因此为了…...
SQL练习——(15/81)
目录 1.计算次日留存率 2.多条件查询 方法1:子查询 方法2:窗口函数实现 3.条件查询——自连接相关 1.计算次日留存率 550. 游戏玩法分析 IV - 力扣(LeetCode) 错误查询1:(没有考虑从首次登录日期开始…...
数据中心 智慧机房解决方案
该文档介绍数据中心智慧机房解决方案,涵盖模块化数据中心(机柜式、微模块),具备低成本快速部署、标准化建设等特点;监控管理系统(DCIM)可实现设施、资产、容量、能效管理;节能解决方案含精密空调节能控制柜,节能率高达 30%;还有7X24 小时云值守运维服务。方案亮点包括…...
网络-MOXA设备基本操作
修改本机IP和网络设备同网段,输入设备IP地址进入登录界面,交换机没有密码,路由器密码为moxa 修改设备IP地址 交换机 路由器 环网 启用Turbo Ring协议:在设备的网络管理界面中,找到环网配置选项,启用Turb…...
Docker构建 Dify 应用定时任务助手
概述 Dify 定时任务管理工具是一个基于 GitHub Actions 的自动化解决方案,用于实现 Dify Workflow 的定时执行和状态监控。无需再为缺乏定时任务支持而感到困扰,本工具可以帮助设置自动执行任务并获取实时通知,优化你的工作效率。 注意&…...
前端测试策略:单元测试到 E2E 测试
引言 在现代前端开发中,测试已成为确保应用质量和可靠性的关键环节。随着前端应用复杂度的不断提高,仅依靠手动测试已经远远不够。一个全面的前端测试策略应该包含多个层次的测试,从最小粒度的单元测试到模拟真实用户行为的端到端(E2E)测试。…...
Web漏洞扫描服务的特点与优势:守护数字时代的安全防线
在数字化浪潮中,Web应用程序的安全性已成为企业业务连续性和用户信任的核心要素。随着网络攻击手段的不断升级,Web漏洞扫描服务作为一种主动防御工具,逐渐成为企业安全体系的标配。本文将从特点与优势两方面,解析其价值与应用场景…...
大中型水闸安全监测系统解决方案
一、系统概述 水闸是重要的水利基础设施,具有防洪、挡潮、排涝、灌溉、供水、生态、航运和水力发电等综合功能,在国家水网构建、支撑经济社会高质量发展等方面具有十分重要的作用。我国水闸工程面广量大,据2021年统计数据,我国已建…...
紫光同创FPGA实现AD9238数据采集转UDP网络传输,分享PDS工程源码和技术支持和QT上位机
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐我这里已有的以太网方案本方案在Xilinx系列FPGA的应用方案 3、设计思路框架工程设计原理框图AD输入源AD9238数据采集AD9238数据缓存控制模块…...
ffmpeg 把一个视频复制3次
1. 起因, 目的: 前面我写过,使用 python 把一个视频复制3次但是速度太慢了,我想试试看能否改进。而且我想换一种新的视频处理思路,并试试看速度如何。 2. 先看效果 效果就是能行,而且速度也快。 3. 过程: 代码 1…...
仿腾讯会议——添加音频
1、实现开启或关闭音频 2、 定义信号 3、实现开始暂停音频 4、实现信号槽连接 5、回收资源 6、初始化音频视频 7、 完成为每个人创建播放音频的对象 8、发送音频 使用的是对象ba,这样跨线程不会立刻回收,如果使用引用,跨线程会被直接回收掉&a…...
从零训练一个大模型:DeepSeek 的技术路线与实践
从零训练一个大模型:DeepSeek 的技术路线与实践 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 从零训练一个大模型:DeepSeek 的技术路线与实践摘要引言技术路线对比1. 模型架构:…...
interface接口和defer场景分析
接口 接口这里主要两点: 设计业务结构时采用依赖倒转:业务层向下依赖抽象层,实现层向上依赖抽象层。 相比于之前: 之后: 注意struct中嵌套interface和不嵌套interface的区别: type Myinterface interfac…...
【数据结构篇】排序1(插入排序与选择排序)
注:本文以排升序为例 常见的排序算法: 目录: 一 直接插入排序: 1.1 基本思想: 1.2 代码: 1.3 复杂度: 二 希尔排序(直接插入排序的优化): 2.1 基本思想…...
FastAPI自定义异常处理:优雅转换Pydantic校验错误
FastAPI自定义异常处理:优雅转换Pydantic校验错误 背景需求 当使用FastAPI开发API服务时,Pydantic的自动校验异常默认会返回如下格式的422响应: {"detail": [{"type": "missing","loc": ["body", "user", &…...
C++--内存管理
内存管理 1. C/C内存分布 在C语言阶段,常说局部变量存储在栈区,动态内存中的数据存储在堆区,静态变量存储在静态区(数据段),常量存储在常量区(代码段),其实这里所说的栈…...
YOLOV3 深度解析:目标检测的高效利器
在计算机视觉领域,目标检测一直是一个重要且热门的研究方向,广泛应用于安防监控、自动驾驶、机器人视觉等诸多场景。YOLO(You Only Look Once)系列算法凭借其出色的实时性和较高的检测精度,在目标检测领域占据着重要地…...
select * from 按时间倒序排序
在SQL中,如果你想要根据时间字段来倒序排序查询结果,你可以使用ORDER BY子句,并结合DESC关键字来实现这个目的。这里有几个常见的场景和示例,假设我们有一个表events,里面包含一个时间戳字段event_time。 示例1&#…...
数据结构-DAY06
一、树的概念 1.链表是数的一部分(斜树) 2.树的查找速度很快 3.层序:前序:根左右 中序:左根右 后序: 左右根 4.树的存储:顺序结构,链式结构 5.特点: 1…...
JavaWeb:SpringBoot处理全局异常(RestControllerAdvice)
问题 GlobalExceptionHandler 小结...
免费私有化部署! PawSQL社区版,超越EverSQL的企业级SQL优化工具面向个人开发者开放使用了
1. 概览 1.1 快速了解 PawSQL PawSQL是专注于数据库性能优化的企业级工具,解决方案覆盖SQL开发、测试、运维的整个流程,提供智能SQL审核、查询重写优化及自动化巡检功能,支持MySQL、PostgreSQL、Oracle、SQL Server等主流数据库及达梦、金仓…...
buuctf RSA之旅
BUUCTF-RSA的成长之路 rsarsaRSA1RSA3RSA2RSARSAROLLDangerous RSA[GUET-CTF2019]BabyRSArsa2RSA5[NCTF2019]childRSA[HDCTF2019]bbbbbbrsaRSA4[BJDCTF2020]rsa_output[BJDCTF2020]RSA[WUSTCTF2020]babyrsa[ACTF新生赛2020]crypto-rsa0[ACTF新生赛2020]crypto-rsa3[GWCTF 2019]…...
javascript 编程基础(2)javascript与Node.js
文章目录 一、Node.js 与 JavaScript1、基本概念1.1、JavaScript:动态脚本语言1.2、Node.js:JavaScript 运行时环境 2、核心区别3、执行环境差异3.1、浏览器中的JavaScript3.2、Node.js中的JavaScript 4、共同点5、为什么需要Node.js? 一、No…...
IDEA+AI 深度融合:重构高效开发的未来模式
在 Java 开发领域,IntelliJ IDEA(以下简称 IDEA)作为最受欢迎的集成开发环境之一,一直是开发者的得力工具。而飞算 JavaAI 凭借强大的人工智能技术,为 Java 开发带来了全新的效率提升可能。当 IDEA 与飞算 JavaAI 深度…...