FPSSample 完整上手指南:Unity 第一人称多人射击示例项目的克隆、AssetBundle 构建与联机运行
游戏开发示例工程【免费下载链接】FPSSampleA first person multiplayer shooter example project in Unity项目地址https://gitcode.com/gh_mirrors/fp/FPSSample点击查看免费下载本篇技术指南以 FPSSample 官方 README 为主体结合仓库中的编辑器构建工具、控制台系统与网络层源码系统讲解如何从零获取并运行这个由 Unity Technologies 团队开发、源码与资源全量开放的第一人称多人射击示例项目。读完本文你将掌握通过 Git LFS 正确克隆项目、安装匹配的 Unity 2018.3.8f1 环境、首次导入后的必要修复步骤、使用 Project Tools 窗口构建 AssetBundle 与 Standalone 玩家端、通过 Quick Start 一键拉起 headless 服务器与客户端以及控制台命令与变量的完整玩法。项目概况与技术栈FPSSample 是一个功能完整的第一人称多人射击游戏示例由 Unity Technologies 的一个小型团队开发附带全部源代码与美术资源。项目的目标有三个测试并展示 Unity 的新特性、为其他团队提供可复用的引导起点bootstrap、以及作为学习与灵感来源。项目大量采用当时 Unity 的新技术HD Render PipelineHDRP全部内容均按 HDRP 标准制作相关实现与着色器资产可见于 Assets/ScriptableRenderPipeline 目录网络传输层multiplayer transport基于 Packages/com.unity.transport 与 Packages/com.unity.multiplayerEntity Component SystemECS项目主要采用 “ECS 模式” 的混合用法hybrid mode即以大量常规组件配合部分 ECS 实体与数据组件随着 Unity 逐步推出支持 ECS 的功能版本项目会随之迁移。项目状态说明README 明确指出该项目基于 Unity 2018.3已不再积极维护。官方建议将其作为学习资源或灵感来源若打算开启新项目应升级到最新版 Unity 与包。这决定了本文的所有版本与配置说明均以该仓库的实际内容为准。当前状态速览Unity version: 2018.3.8f1 Platforms : Windows (client and server) and Linux (server only)即客户端与服务器均支持 WindowsLinux 仅支持服务器headless。获取项目必须使用 Git LFS 克隆README 给出了一个极易踩坑的关键提示重要本项目使用 Git Large Files SupportLFS。使用 GitHub 上的绿色按钮下载 zip 压缩包无法正常工作你必须用带 LFS 支持的 git 版本克隆项目。具体注意点项目体积约为18GB仅 Assets 文件夹由于包含 git 状态信息克隆下来的仓库体积几乎是其两倍如果克隆下来的体积远小于预期很可能是因为克隆时没有启用 LFS此时资源文件会是损坏的指针文件而非真实内容安装 Git LFS 后使用常规方式克隆即可例如git clone https://gitcode.com/gh_mirrors/fp/FPSSample。安装正确的 Unity 版本与平台支持克隆完成后需要安装 README 前置条件中列出的 Unity 版本2018.3.8f1。安装时务必勾选以下模块支持Windows Standalone Support构建 Windows 客户端与服务器Linux Support如需构建 Linux headless 服务器则必须安装。由于项目所有内容均按 HDRP 制作还应在 ProjectSettings/GraphicsSettings.asset 等配置中确认 HDRP 渲染管线Assets/ScriptableRenderPipeline/HDRP_Assets已正确引用。首次打开项目第一次打开项目需要耐心——导入全部资源需要相当长的时间。导入完成后README 特别标注了 Unity 2018.3 的两个已知问题及对应修复步骤Firstperson_Projection 着色器重导入在 Project 搜索栏搜索Firstperson_Projection选中搜索出的 4 个着色器右键执行Reimport实体entities脚本编译错误如果出现与 entities 相关的编译错误需要移除并重新安装 entities 包见 Packages/manifest.json 中声明的包依赖。打开 Project Tools 窗口编辑器就绪后通过菜单FPS Sample Windows Project tools打开Project Tools 窗口。窗口界面如下建议将该窗口停靠dock在编辑器边缘后续会频繁使用。从这里可以打开关卡、构建 AssetBundle、构建 Standalone 玩家端。由于这是多人游戏你将会大量操作 Standalone 进程。窗口的源码实现位于 Assets/Scripts/EditorTools/Editor/BuildWindow.cs通过[MenuItem(FPS Sample/Windows/Project Tools)]注册菜单项并在OnGUI中依次绘制关卡选择DrawLevelSelect、构建工具DrawBuildTools与快速启动DrawQuickStart三个区域。尝试预览模式Preview Mode在 Project Tools 窗口中点击Level_00旁边的Open按钮。项目的关卡被拆分为多个场景但通过该按钮可以一次性打开组成一个关卡的所有场景源码中由 Assets/Scripts/EditorTools/Editor/EditorLevelManager.cs 负责解析分层关卡。打开后直接点击编辑器Play进入运行模式即可在关卡中自由跑动。这就是项目所称的 “预览模式preview mode”可用于测试关卡、玩家移动与武器。构建 AssetBundle 与 Standalone 玩家端退出 Play 模式回到 Project Tools 窗口确认Game区域标题下显示 Building for: StandaloneWindows64...。若不是请通过常规方式File Build Settings切换目标平台。第一步构建 AssetBundle在窗口的 bundles 区域按下All [force]。这会强制重建全部关卡与预制体的 AssetBundle。首次构建耗时较长因为所有着色器都需要编译。其底层逻辑在 Assets/Scripts/EditorTools/Editor/BuildTools.cs 中BuildBundles会先BuildLevelBundles遍历所有LevelInfo把主场景及其分层场景打包进以关卡名命名的 bundle再调用BundledResourceBuilder.BuildBundles打包预制体资源最终输出到SimpleBundleManager.assetBundleFolder指定的AssetBundles文件夹见 Assets/Scripts/Game/Core/SimpleBundleManager.cs。第二步构建 Standalone 玩家端Bundle 构建完成后点击 Game 区域的Build game。这会构建 Standalone 玩家端首次同样较慢。从源码可以看到 Standalone 玩家端只包含代码和一个极小的引导场景// Assets/Scripts/EditorTools/Editor/BuildTools.cs#L28-L32 var levels new string[] { Assets/Scenes/bootstrapper.unity, Assets/Scenes/empty.unity };即 Assets/Scenes/bootstrapper.unity 与 Assets/Scenes/empty.unity 两个场景被打进玩家端其余所有关卡与角色内容均从 AssetBundle 加载。注意由于 Unity 2018.3 的限制构建时可能出现形如Maximum number (256) of shader keywords exceeded, keyword KEYWORD_NAME will be ignored.的错误。遇到时可关闭并重新打开 Unity 再试一次构建。这类错误相对无害但可能导致部分着色器使用错误的关键字而出现图形瑕疵。第三步使用 Quick Start 启动器联机构建完成后找到窗口底部的Quick Start区域按下述参数填写Mode:MultiplayerLevel:Level_00Clients:1Headless:CheckedUse editor:Unused点击绿色的Start按钮会启动两个进程一个 Standalone 的 headless 服务器另一个尝试连接该服务器的客户端。启动器的参数组装逻辑在 Assets/Scripts/EditorTools/Editor/BuildWindow.cs 的QuickstartEntry.GetArguments中服务器模式生成serve levelname客户端模式生成client 127.0.0.1headless 时追加-batchmode -nographics。这些参数最终作为命令行参数传给 Standalone 玩家端。参数之所以能以前缀被识别为控制台命令是因为 Assets/Scripts/Console/Console.cs 的ProcessCommandLineArguments会遍历命令行参数将所有开头的参数转换为控制台命令入队执行。这也就是 README 中所说 “任何以前缀的命令行参数都会成为控制台命令” 的源码依据。游戏内容与玩法概览结合仓库中的 Documentation/GettingStarted.md可以更完整地了解这个示例游戏的内容游戏模式与角色FPSSample 是纯多人游戏——没有单机模式不连接服务器就无法游玩。游戏包含两名角色Terraformer与Robot各自拥有带主/副开火模式的武器。两种游戏模式团队死亡竞赛Team Deathmatch两队互相击杀得分时间结束时得分多者获胜突击模式Assault一方进攻、一方防守。进攻方在时间耗尽前占领全部 3 个基地即获胜防守方阻止其达成目标基地内有我方玩家即推进占领进度敌方玩家在场则可夺回进度。关卡Level_01主关卡为突击模式设计Level_00主要用于测试体量远小于前者。默认键位按键功能WASD玩家移动Shift冲刺鼠标视角左键主武器开火右键副武器开火Space跳跃V近战攻击H在已占领基地或出生点切换角色Enter打开聊天Tab查看计分板ESC菜单F1打开控制台AltEnter切换全屏理解工作流Standalone 与 AssetBundle在 Unity 中开发多人游戏意味着要频繁与 Standalone 玩家端打交道。要让客户端与服务器通过网络对话必须有两个独立进程。为使这一工作流尽可能顺畅项目用 AssetBundle 承载所有内容关卡、角色等Standalone 玩家端中只包含代码与一个极小的引导场景。因此只有修改了关卡或预制体才需要重建 AssetBundle且可在一定程度上选择性重建只改代码则只需重新 Build game。Project Tools 窗口中最常用的功能按钮及其对应源码位置按钮功能源码位置Open打开组成一个关卡的所有场景BuildWindow.csLevels [force]将所有关卡打进 BundleBuildTools.csAssets [force]将所有预制体玩家等打进 BundleBuildTools.csAll [force]同时构建关卡与预制体 Bundle同上二者同时置位Build game构建代码与引导场景BuildTools.csRun以boot mode启动游戏不加载关卡仅引导场景BuildWindow.csOpen build folder打开包含 Standalone 玩家端的目录BuildWindow.csUpdate Registry更新构建预制体 Bundle 时使用的注册表见 Assets/Scripts/Game/Core 下的 Registry 相关实现说明Update Registry 仅在向项目新增游戏元素如 Character、Replicated entity、Hero definition时才需要执行。从 boot mode 进入其他模式从 boot mode 启动的 Standalone 玩家端可以进入其他运行模式通过控制台输入以下命令preview level_01 # 进入 level_01 的预览模式等价于在编辑器中打开该关卡后按 Play connect 127.0.0.1 # 进入客户端模式并连接指定 IP serve level_00 # 启动服务器这些命令在 Assets/Scripts/Game/Main/Game.cs 中注册preview、serve、client、connect等命令分别请求创建对应的PreviewGameLoop、ServerGameLoop、ClientGameLoop详见下文源码结构一节。实际工作中更多时候使用 Project Tools 的Quick Start区域来启动不同的客户端/服务器组合——其本质就是把命令行参数传递给 Standalone 玩家端窗口最底部会实时显示最终拼装出的命令行参数这也是学习 Quick Start 工具运作方式的最佳入口。控制台、命令与变量游戏内任意时刻按F1打开控制台。控制台支持命令commands与变量vars并支持Tab 补全。控制台的实现位于 Assets/Scripts/Console其中 Console.cs 负责命令注册与执行、ConsoleGUI.cs 提供编辑器/客户端内的 GUI 界面headless 模式下则由 ConsoleTextLinux.cs 或 ConsoleTextWin.cs 提供文本界面。常用命令命令功能help列出所有命令serve levelname以指定关卡进入服务器模式connect host进入客户端模式并连接主机preview levelname进入预览模式测试关卡nextchar切换角色exec file执行文件中的命令如同在控制台逐条输入respawn强制重生thirdperson切换第三人称视角用于调试runatserver command在服务器的控制台执行命令vars显示所有变量除上述命令外控制台还内置了quit退出游戏、load、menu、screenshot、saveconfig/loadconfig保存/加载用户配置等命令均在 Game.cs 与 Console.cs 中注册。常用变量变量的数量远多于命令。README/GettingStarted 中列出的常用变量如下其中默认值结合仓库源码[ConfigVar]特性声明处进行了核对与补充变量功能默认值client.debug设为 1/2/3 可获得客户端网络相关的大量调试输出默认 0见 NetworkClient.csclient.matchmaker匹配服务器host:port端点默认0.0.0.0:80见 ClientGameLoop.csclient.playername玩家可见昵称默认Noname见 ClientGameLoop.csclient.updaterate客户端期望从服务器获得的最大速率单位字节/秒默认 30000见 ClientGameLoop.csclient.updatesendrate客户端期望从服务器获得的速率单位包/秒文档示例值 20config.fov视野角度默认 60见 Game.csconfig.mousesensitivity鼠标灵敏度默认 1.5见 Game.csconfig.inverty是否反转 Y 轴默认 0见 Game.csgame.assault.minplayers突击模式开赛所需最少玩家数默认 2见 GameModeAssault.csgame.assault.roundlength突击模式单局时长秒默认 420见 GameModeAssault.csgame.dm.minplayers死亡竞赛开赛所需最少玩家数默认 2见 GameModeDeathmatch.csgame.dm.roundlength死亡竞赛单局时长秒默认 420见 GameModeDeathmatch.csgame.modename游戏模式deathmatch或assault默认 assault见 GameModeSystemServer.csnet.stats设为 0 显示网络统计/图形默认 0见 NetworkCommon.csr.vsync每帧同步的垂直同步数0 表示不同步默认 1见 RenderSettings.csr.resolution当前分辨率如1920x1080见 RenderSettings.csserver.port服务器监听端口源码默认 7913见 NetworkCommon.csserver.quitwhenempty设为 1 时服务器在最后一名玩家离开后退出默认 0见 ServerGameLoop.csserver.recycleinterval若 0服务器在无玩家 N 秒后自动关闭默认 0见 ServerGameLoop.csserver.sqp_portServer Query Protocol 端口默认 0即使用server.port 1见 NetworkCommon.csserver.tickrate服务器与客户端的 tick 频率默认 60见 Game.csshow.compactstats设为 1 在左上角显示 FPS 与 RTT默认 1见 GameStatistics.csshow.fps设为 0 显示 FPS 统计默认 0见 GameStatistics.cssound.debug显示声音调试信息默认 0见 SoundSystem.cs注README/GettingStarted 中server.port的示例值为 7912而仓库源码 NetworkCommon.cs 中声明的默认值为 7913具体以你构建出的实际版本为准server.sqp_port默认 0 时按server.port 1计算。boot.cfg 与 user.cfg 的启动机制变量与命令的组合形成了项目的启动配置机制。在 Game.cs 中定义了两个配置文件static readonly string k_UserConfigFilename user.cfg; public static readonly string k_BootConfigFilename boot.cfg;Game.Awake的启动流程Game.cs启动时先执行exec -s user.cfg加载用户配置除非命令行包含-noboot否则继续执行exec -s boot.cfg——即游戏开箱即用的行为由 boot.cfg 驱动支持 Multiplay 标准的-port与-query_port参数会分别改写server.port与server.sqp_port。构建系统在生成构建产物时会自动写入这些配置文件。例如 Windows 构建后处理会生成server.bat内容为-nographics -batchmode -noboot serve level_01 game.modename assault、空的user.cfg以及含client/load level_menu的boot.cfg见 BuildTools.csLinux headless 构建则会生成含game.modename assault与serve level_01的boot.cfg见 BuildTools.cs。saveconfig命令通过ConfigVar.Save把带Save标志的变量持久化到user.cfg。制作正式构建BuildSystem 菜单要制作完整的游戏构建使用FPS Sample BuildSystem菜单项例如CreateBuildWindows64制作完整 Windows 构建Mono 后端CreateBuildWindows64-IL2CPP使用 IL2CPP 后端的 Windows 构建CreateBuildLinux64制作 Linux headless 服务器构建BuildOptions.EnableHeadlessMode。这些菜单项在 BuildTools.cs 中通过[MenuItem]注册且同时是可从 Unity 命令行直接调用的静态函数方便接入构建机build machine做自动化集成。一次完整构建会依次执行构建全部 AssetBundle强制→BuildPipeline.BuildPlayer构建玩家端 → 写入server.bat、user.cfg、boot.cfg等配置文件输出目录形如Builds/StandaloneWindows64/product_target_yyyyMMdd.buildNumber.changelist。源码结构概览README 指向 Documentation/SourceCode.md 获取更详细的源码导览这里摘录其核心脉络便于你在阅读代码时建立整体地图Game 类与 GameLoopGame.cs 是定义游戏主循环的 MonoBehavior几乎所有游戏代码都在Game.Update中运行少数例外。它是最早被实例化的类之一无论游戏处于何种状态始终存在并负责实例化 Audio、Input 等系统。游戏可以通过RequestGameLoop请求更新某个具体的GameLoop——GameLoop 实现游戏所处的各种模式负责所需系统的初始化/关闭以及按正确顺序更新系统运行时可切换。当前实现的 GameLoop 类型有ServerGameLoopServerGameLoop.cs处理与一批客户端的连接并更新所有服务器系统ClientGameLoopClientGameLoop.cs处理与服务器的单条连接并更新所有客户端系统PreviewGameLoopPreviewGameLoop.cs服务器与客户端 GameLoop 的混合体用于不构建 Bundle、不启服务器也能预览游戏——即编辑器内加载游戏场景后按 Play 时的模式。模块化组织部分游戏代码按**模块modules**组织位于 Assets/Scripts/Game/Modules。模块包含组件及更新这些组件的系统也可以包含由 GameLoop 实例化的特定类并可针对服务器/客户端/预览提供不同实现。主要模块包括ReplicatedEntity Module负责 GameObject 与 ECS 实体的网络复制带ReplicatedEntity组件的预制体需注册进ReplicatedEntityRegistry可序列化的复制组件需实现INetworkSerializable接口ECS 实体复制通过继承ReplicatedEntityFactory的 ScriptableObject 实现Player Module服务器为每个连接玩家创建Player实体并广播玩家信息每个客户端持有LocalPlayer实例承载相机控制、UI 等本地表现组件Character Module负责角色能力Abilities、动画与 UI角色由带Character/Character1P组件的预制体定义通过CharacterTypeDefinitionScriptableObject 配置所有行为由AbilityController驱动的 Ability 处理HeroTypeAsset定义英雄属性与武器/能力Item / Effect / Grenade / HitCollision / Projectile / Ragdoll / SpectatorCam Module分别处理道具与特效触发、客户端火忘式fire-and-forget特效、手雷服务器端模拟与客户端插值、带服务器端回滚lag compensation的命中碰撞、弹道与预测、布娃娃物理、以及观战相机等。ECS 混合模式几乎全部游戏代码都用 ECS 系统实现但处于所谓的mixed-mode由于部分依赖功能尚未在 ECS 中实现代码仍以 GameObject 与 MonoBehavior 为基础辅以部分实体与数据组件同时项目选择手动更新所有系统以完全掌控更新顺序——这在需要每帧多次更新系统如客户端预测时是必需的。更多资料与许可README 指向 Documentation 目录获取更多信息尤其推荐从 GettingStarted.md 开始。仓库内还包含 SourceCode.md、Animation.md、Characters.md、SmallEditorTools.md 等专题文档以及记录演进要点的 CHANGELOG.md 与贡献指南 CONTRIBUTING.md。许可方面项目的意图是让使用者可以把其中任何内容作为自己 Unity 游戏的起点或部件来使用法律条文见 LICENSE.md。常见问题与注意事项汇总最后将 README 及源码中提到的坑点汇总供排查时快速对照现象原因与对策克隆后仓库体积远小于预期克隆时未启用 Git LFS必须使用带 LFS 的 git 重新克隆初次导入后画面/着色器异常搜索Firstperson_Projection对 4 个着色器右键 Reimportentities 脚本编译错误移除并重新安装 entities 包构建时出现 shader keywords exceeded 错误Unity 2018.3 限制关闭并重开 Unity 后重试错误相对无害但可能产生图形瑕疵局域网玩家无法连接在connect IP创建游戏后需确认防火墙允许相应端口server.port通信按照本文流程走完克隆、环境安装、Bundle 构建与 Quick Start 启动你就能在本地拉起一局由 headless 服务器 客户端组成的完整多人对战并在此基础上继续探索 FPSSample 的源码与架构。赞分享游戏开发示例工程【免费下载链接】FPSSampleA first person multiplayer shooter example project in Unity项目地址https://gitcode.com/gh_mirrors/fp/FPSSample点击查看免费下载相关推荐Unity第一人称射击游戏架构解析FPSSample模块化设计实践指南Unity第一人称射击游戏架构解析FPSSample模块化设计实践指南 想要构建一个专业的Unity第一人称射击游戏吗FPSSample项目为你提供了一个完游戏开发示例工程终极Unity多人在线FPS游戏开发指南从零构建你的第一人称射击游戏终极Unity多人在线FPS游戏开发指南从零构建你的第一人称射击游戏 想要学习如何在Unity中制作专业的 多人在线第一人称射击游戏 这个教程项目是你的完美Unity FPS游戏开发终极指南从零构建沉浸式第一人称射击场景Unity FPS游戏开发终极指南从零构建沉浸式第一人称射击场景 FPSSample是一个功能完整的Unity第一人称多人射击游戏示例项目为游戏开发者提供了游戏开发示例工程上一篇如何解决 Photographer.io 开源摄影社区常见问题完整指南下一篇CTF-Wiki 格式化字符串漏洞原理详解printf 参数解析、栈内存布局与利用基础创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SpriteJS 3D 渲染对象(RenderTarget)实战:FrameBuffer 离屏渲染、纹理回读与双缓冲复用

SpriteJS 3D 渲染对象(RenderTarget)实战:FrameBuffer 离屏渲染、纹理回读与双缓冲复用

图形学3D渲染 【免费下载链接】spritejs A cross platform high-performance graphics system. 项目地址: https://gitcode.com/gh_mirrors/sp/spritejs 点击查看 免费下载 导读:在 SpriteJS 3D 扩展中,RenderTarget 是一块可绘制的 FrameBu…

2026/10/13 1:43:13 阅读更多 →
用Cucumber让自动化测试成为团队通用语言:从BDD到工程落地

用Cucumber让自动化测试成为团队通用语言:从BDD到工程落地

你们有没有经历过这种尴尬:自动化测试代码写完了,用例也跑起来了,结果一到评审会,业务方盯着满屏的assertEquals和元素定位表达式,问了一句“这到底验证的是什么业务规则?”整个会议室瞬间安静。这不是我编…

2026/10/13 1:43:13 阅读更多 →
TaskingAI Record 删除指南:用 Python SDK 永久删除 Collection 中的记录及其 Chunks

TaskingAI Record 删除指南:用 Python SDK 永久删除 Collection 中的记录及其 Chunks

人工智能大模型AI AgentRAG后端前端 【免费下载链接】TaskingAI The open source platform for AI-native application development. 项目地址: https://gitcode.com/gh_mirrors/ta/TaskingAI 点击查看 免费下载 本指南围绕 TaskingAI 检索(Retrieval&a…

2026/10/13 1:43:13 阅读更多 →

最新新闻

AnyPS5项目内容创作:合规安全下的信息完整性要求

AnyPS5项目内容创作:合规安全下的信息完整性要求

好的,我理解您的需求。在收到您提供的完整输入(项目正文、关键词、摘要描述等)之前,我无法开始创作一篇合规、安全且高质量的博文。目前您仅提供了项目标题“AnyPS5”,但缺乏上下文。基于我严格的创作准则与安全红线&a…

2026/10/13 2:30:31 阅读更多 →
OpenCV实现工业级形状匹配:从轮廓到鲁棒定位

OpenCV实现工业级形状匹配:从轮廓到鲁棒定位

1. 项目概述:为什么一个“形状匹配”函数值得专门复现?在工业视觉检测、精密装配引导、电子元器件定位这些实际产线场景里,我见过太多团队卡在一个看似微小却极其关键的环节上:如何在复杂背景、轻微形变、光照不均甚至部分遮挡的情…

2026/10/13 2:30:31 阅读更多 →
FFmpeg 32位静态版在Win10/Win11上运行报错原因与验证方法

FFmpeg 32位静态版在Win10/Win11上运行报错原因与验证方法

简介:本资源为FFmpeg 4.3.1版本的Windows 32位静态编译版,专为Windows平台音视频开发人员、多媒体工具集成者及轻量级部署场景设计,解决依赖库缺失导致的运行失败问题。静态编译使ffmpeg.exe、ffplay.exe、ffprobe.exe三个核心可执行文件无需…

2026/10/13 2:30:31 阅读更多 →
TD3深度强化学习赋能ROS自主导航与避障实战解析

TD3深度强化学习赋能ROS自主导航与避障实战解析

简介:基于深度强化学习的智能机器人自主导航与避障系统完整代码包,面向机器人、人工智能与控制方向的开发者,解决多传感器融合、动态避障、实时决策与ROS集成部署等核心问题。压缩包共19个文件,以Python源码为主,辅以多…

2026/10/13 2:30:31 阅读更多 →
WinForm + SQLite + EF:内部工具快速重构的可靠技术选型

WinForm + SQLite + EF:内部工具快速重构的可靠技术选型

简介:这是一套面向WinForm桌面开发者的SQLite集成示例工程,基于.NET Framework 4.8,演示如何借助EntityFramework ORM框架完成SQLite数据库的读取、新增与删除操作。工程内置主窗口列表展示数据,并封装了EF数据访问层,…

2026/10/13 2:30:31 阅读更多 →
绿联NAS部署Hermes Agent教程:搭建专属自进化AI智能体

绿联NAS部署Hermes Agent教程:搭建专属自进化AI智能体

Hermes Agent 是由 Nous Research 推出的开源自主 AI 智能体框架,具备持久记忆、自动技能创建和多平台通信等核心能力,能从任务中自动提炼技能并跨会话持久记忆用户偏好,真正实现“越用越强”。截至 2026 年 4 月,该项目在 GitHub…

2026/10/13 2:29:30 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →