Unity Standard Assets消失之谜:Package Manager时代如何获取基础功能资源
1. 项目概述Standard Assets的“消失”与资源商店的变迁如果你最近打开Unity想导入那个经典的“Standard Assets”包却发现它在Package Manager或者Asset Store里怎么也找不到了别慌你不是一个人。这几乎是每个Unity开发者尤其是从Unity 2018、2019版本升级上来的朋友都会遇到的一个标志性“时代变迁”问题。Standard Assets这个曾经是Unity新手入门、快速搭建原型、学习基础功能的“瑞士军刀”在Unity的现代化进程中已经完成了它的历史使命被更模块化、更灵活的Package Manager系统所取代。简单来说Standard Assets并没有“消失”而是被“拆解”和“重构”了。Unity官方已经将这个庞大的、包含从第一人称控制器到粒子特效、从车辆物理到2D精灵的“全家桶”拆分成了一个个独立的、可以通过Package Manager安装的官方资源包。你找不到它是因为Unity Hub在创建新项目时默认不再捆绑这个包而Asset Store里的老版本也因为兼容性问题被下架或隐藏了。这背后反映的是Unity引擎架构从“大而全”向“按需索取”的演进目的是减少项目冗余提升加载和编译速度。对于开发者而言这意味着我们需要改变过去“一键导入”的习惯转而学会精准地寻找和安装我们真正需要的功能模块。接下来我就带你彻底理清这个问题并告诉你现在该如何正确、高效地获取那些你心心念念的“标准”功能。2. 问题根源深度解析为什么Standard Assets不见了要解决问题必须先理解问题背后的逻辑。Standard Assets的“失踪”并非偶然而是Unity技术栈升级和项目管理理念变革的必然结果。我们可以从以下几个层面来深入剖析2.1 技术架构的演进从“内置”到“包化”在Unity 5.x及更早的版本中Standard Assets是作为引擎“内置资源”的一部分存在的。当你创建一个新项目时这些资源文件脚本、预制体、材质、模型等会被直接复制到你的项目Assets文件夹下。这种方式虽然方便但带来了几个显著问题项目臃肿即使你只用到了一个第一人称控制器整个庞大的Standard Assets文件夹都会被包含进来增大了项目体积。更新困难这些资源被当作普通项目资产更新它们意味着需要用户手动替换文件极易引发冲突和错误。版本管理混乱不同Unity版本捆绑的Standard Assets内容可能不同导致项目在不同版本间迁移时出现兼容性问题。随着Unity 2017.3引入Package ManagerUnity开始推行“包化”管理。核心思想是将引擎功能、官方工具、资源样例都模块化变成一个个独立的包Package。这些包并不直接存放在项目Assets目录而是通过一个清单文件manifest.json进行声明和引用实际内容存储在用户本地的全局缓存或从注册服务器下载。这样做的好处显而易见按需安装你需要什么就安装什么极大减少了初始项目体积。集中更新所有包可以通过Package Manager统一检查更新一键升级。版本隔离项目可以锁定特定版本的包确保团队协作和长期维护的稳定性。因此Standard Assets这个“庞然大物”被拆解其内部组件根据功能被重构为多个独立的官方包如用于输入管理的Input System、用于渲染的Universal RP或HDRP的示例内容等。2.2 Asset Store的定位调整Asset Store资源商店的定位是第三方开发者与艺术家分享和销售资源的市场。将官方维护的核心示例和资源长期放在这里从管理和分发角度并不高效。随着Package Manager的成熟Unity更倾向于将官方资源通过这个官方渠道进行分发。因此Asset Store上那个古老的“Standard Assets”包页面很可能被设置为“隐藏”或“不推荐”在搜索中权重降低甚至在某些区域被下架以引导用户转向新的获取方式。2.3 创建项目模板的变化如果你使用的是较新版本的Unity Hub如2020 LTS及以后版本在创建新项目时提供的模板也发生了变化。早期的“3D with Extras”或类似模板可能会默认包含Standard Assets但现在更常见的“通用渲染管线URP”或“高清渲染管线HDRP”模板包含的是与之配套的示例资源包而不是旧的Standard Assets。这也是你感觉它“消失”的一个直接原因。注意这里有一个常见的误区。有些教程会教你去Unity的官方GitHub仓库下载Standard Assets的源码然后手动导入。这种方法仅适用于学习或兼容非常老的项目。对于新建项目强烈不建议这么做因为你可能会引入已过时的代码、与当前Unity版本不兼容的API以及潜在的性能问题。正确的做法是使用新的、官方维护的包。3. 现代解决方案如何获取“新版”Standard Assets功能既然旧的路径已经不通我们就必须掌握新的方法。目前获取各类基础功能和示例资源主要通过以下两个官方途径3.1 主战场Unity Package Manager这是你现在最应该熟悉和使用的工具。打开方式在Unity编辑器顶部菜单选择Window Package Manager。切换视图在Package Manager窗口左上角将视图从“In Project”切换到“Unity Registry”。这样你才能看到所有可用的官方包。搜索与安装虽然没有一个叫“Standard Assets”的包但你可以搜索其包含的特定功能。以下是一些关键替代包输入系统旧的“Standard Assets”里有第一/第三人称控制器其输入逻辑基于旧的Input Manager。现代替代方案是功能更强大的Input System包。安装后你需要从“Player Settings”中启用它并学习新的基于Action的输入配置方式。角色控制器对于第一人称控制器FPSController和第三人称控制器ThirdPersonControllerUnity提供了一个更现代、基于Input System的示例项目包。你可以在Package Manager的“Unity Registry”中搜索“Starter Assets”或“Third Person Controller”或查看“Samples”分类。安装后这些资源会作为“Samples”提供你可以一键导入到项目的Assets目录。车辆物理旧的“Standard Assets”中的车辆Car示例其物理实现相对简单。对于严肃的车辆模拟建议研究专门的资源包或从Asset Store购买更专业的解决方案。Unity官方也可能提供相关的示例包可以搜索“Vehicle”查看。粒子系统与特效旧的粒子示例已过时。现在应直接学习Particle System组件并使用URP或HDRP提供的着色器来创建特效。Unity的Visual Effect Graph需要安装Visual Effect Graph包是制作复杂GPU粒子的现代工具。2D资源旧的2D精灵、动画控制器等已被“2D”相关包和更完善的2D工作流所取代。确保在创建项目时选择2D模板或通过Package Manager安装2D相关的包。安装示例很多官方包都自带“Samples”。找到包后例如Universal RP在详情页会有一个“Samples”区域列出可导入的示例内容点击“Import”即可将其作为普通资产导入你的项目。3.2 备选路径Unity Asset Store的筛选虽然旧的Standard Assets包难觅踪影但Asset Store仍然是获取高质量第三方控制器、工具和艺术资产的宝库。你可以通过更精确的关键词搜索来找到替代品搜索“First Person Controller”、“Third Person Controller”、“Mobile Input”、“Character Controller”等。使用筛选功能选择“免费”资源有很多优秀的社区作品可以替代老Standard Assets中的功能。查看资源的更新日期和兼容的Unity版本确保其支持你当前使用的引擎版本。实操心得我的习惯是在开始一个新项目时首先通过Package Manager安装核心框架包如Input System,CinemaMachine,Unity UI等然后根据项目类型URP/HDRP/2D安装对应的渲染管线包并导入其Samples。对于特定的控制器需求我通常会先在Asset Store寻找评价高、更新频繁的免费资源如果找不到合适的再考虑使用官方Starter Assets或自己基于Character Controller组件开发。这比直接使用古老的Standard Assets要高效、稳定得多。4. 分步实操以获取第一人称控制器为例让我们以一个具体且高频的需求——获取一个可用的第一人称控制器——来演示完整的现代工作流。假设我们使用Unity 2022.3 LTS版本并选择URP通用渲染管线模板创建项目。4.1 步骤一项目初始化与核心包安装创建项目打开Unity Hub点击“New Project”。选择“Universal RP (URP)”模板它会自动配置好URP渲染管线给项目命名并创建。打开Package Manager项目加载完成后点击Window Package Manager。安装Input System在“Unity Registry”视图中找到“Input System”包点击“Install”。安装过程中可能会提示你重启编辑器同意即可。启用新输入系统重启后点击Edit Project Settings在“Player”设置中找到“Active Input Handling”选项将其从“Input Manager (Old)”切换为“Input System Package (New)”或“Both”。对于新项目建议只使用新的Input System。4.2 步骤二寻找并导入官方角色控制器资源搜索Starter Assets回到Package Manager确保视图是“Unity Registry”。在搜索框中输入“Starter Assets”。你可能会看到名为“Starter Assets - First Person Character Controller”或类似名称的包。注意包名和可用性可能随Unity版本更新而变化。安装与导入Sample点击该包在右侧详情页的“Samples”区域你会看到可导入的示例。点击“Import”按钮Unity会将这些示例资源预制体、脚本、输入配置等下载并放置到你项目的Assets/Samples/目录下。场景搭建导入完成后你可以在Assets/Samples/...文件夹中找到名为“FirstPersonPlayer”或类似的预制体Prefab。直接将其拖入你的场景中。同时示例中通常包含一个配置好的InputActionAsset文件用于定义移动、跳跃、视角等输入动作。4.3 步骤三配置与测试检查组件选中场景中的玩家预制体查看其Inspector窗口。你应该能看到Player Input组件来自Input System包已经引用了刚才导入的输入配置文件。还会看到Character Controller组件以及处理移动和视角旋转的脚本。摄像机设置确保第一人称摄像机的设置正确通常是玩家预制体的子物体并且其Camera组件被正确配置例如Clear Flags设置为SkyboxCulling Mask包含你需要的层。地面与碰撞在场景中创建一个Plane或Terrain作为地面并为其添加Mesh Collider或Terrain Collider。确保玩家预制体上的Character Controller组件不会与地面发生穿透。运行测试点击Play按钮。你应该可以使用WASD键移动鼠标移动控制视角。如果无法移动或视角不动首先检查Player Input组件的“Action Asset”是否赋值正确其次检查输入配置文件中动作Actions的绑定Bindings是否设置例如鼠标Delta绑定到了Look动作。常见问题速查问题导入Starter Assets后编辑器报错提示找不到InputSystem或UnityEngine.Input相关的命名空间。排查确认Input System包已成功安装并启用。检查Player Settings中的“Active Input Handling”是否已设置为新输入系统。有时需要关闭项目重新打开。问题角色可以移动但鼠标无法控制视角旋转。排查检查Input Action Asset中“Look”动作的绑定。它应该绑定到Mouse Delta鼠标增量而不是Mouse Position鼠标位置。同时检查处理视角旋转的脚本是否正确地读取了这个“Look”动作的Vector2值。问题角色移动时穿过了地面或其他物体。排查确保场景中所有需要碰撞的物体都有Collider组件。确保玩家预制体上的Character Controller组件高度、半径设置合理并且其Slope Limit坡度限制和Step Offset台阶高度参数适用于你的场景。5. 进阶指南构建自定义资源获取体系依赖官方Samples只是起点。作为一个资深开发者你需要建立一套自己的资源获取和管理体系以应对各种项目需求。5.1 建立个人资源知识库不要满足于找到一个能用的控制器。你应该深入理解其实现原理。解剖预制体打开导入的玩家预制体逐一研究每个组件的作用。CharacterController是如何处理移动和碰撞的PlayerInput是如何分发输入事件的自定义的移动脚本是如何将输入向量转换为速度并应用重力阅读源码找到并打开相关的C#脚本。这是学习最佳实践和设计模式的最好方式。注意观察脚本是如何使用Input System的API例如InputAction.ReadValueVector2()如何处理帧率无关的移动使用Time.deltaTime以及如何与动画状态机Animator交互。修改与扩展尝试修改移动速度、跳跃高度、鼠标灵敏度等参数。尝试添加新的功能比如下蹲、冲刺、交互。通过动手修改你将真正掌握这套系统而不是仅仅“会用”。5.2 探索Asset Store的优质资源对于Standard Assets中其他缺失的部分如复杂的车辆物理、高级粒子特效、UI框架等Asset Store是绝佳的补充。车辆系统搜索“Vehicle Physics Pro”、“Eddy’s Vehicle Physics”等这些是经过大量项目验证的专业解决方案。UI框架如果觉得Unity原生UIuGUI不够高效可以寻找“FairyGUI”、“GameFramework”等包含UI模块的框架或者专门的“UI Widget”包。特效与着色器搜索“VFX”、“Shader Graph”、“Toony Colors”等关键词能找到大量提升画面表现力的资源。筛选技巧优先选择“最近更新”、“高评分”、“大量销售”且“评价良好”的资源。仔细阅读描述、查看视频和评论特别是关于性能开销和兼容性的反馈。5.3 利用版本控制管理资源依赖当你通过Package Manager安装了大量包后项目根目录下的Packages/manifest.json文件就变得至关重要。它记录了所有已安装包的名称和版本。{ dependencies: { com.unity.inputsystem: 1.7.0, com.unity.render-pipelines.universal: 14.0.8, com.unity.starter-assets-firstperson: 1.0.0, ... } }最佳实践将这个文件纳入你的版本控制系统如Git。这样当你的团队成员拉取项目后只需打开Unity编辑器就会自动根据manifest.json解析并下载所有指定版本的包确保开发环境完全一致。永远不要将Package Manager本地缓存通常位于用户目录下或导入的Samples资源Assets/Samples/直接纳入版本控制manifest.json才是依赖管理的核心。6. 疑难杂症与深度排查即使按照上述步骤操作你可能还是会遇到一些棘手的情况。这里记录几个我踩过的“坑”及其解决方案。6.1 场景一从老项目升级依赖旧的Standard Assets如果你打开一个包含旧Standard Assets的老项目Unity可能会报错提示某些脚本或预制体丢失引用。解决方案A推荐-重构这是彻底解决问题的机会。逐一检查报错的预制体和场景中的对象用新的、基于Package的组件替换它们。例如将使用旧FPSInputController脚本的对象替换为使用新Input System和CharacterController的新预制体。这个过程虽然耗时但能让项目重获新生兼容未来版本。解决方案B临时-恢复如果必须快速运行老项目可以尝试从Unity的官方GitHub仓库Unity Technologies的“UnityCsReference”或相关资源仓库找到对应版本Standard Assets的源码手动下载并放入项目的Assets文件夹。但务必注意这只能作为临时方案并且要严格匹配Unity版本否则可能引发更多错误。6.2 场景二Package Manager中找不到想要的官方示例包Unity的官方包目录和示例内容会不断更新和重组。有时你根据教程找的包名可能已经变了。排查步骤在Package Manager中点击左上角的“”号选择“Add package by name...”。尝试输入可能的包名如com.unity.starter-assets。即使搜索不到手动输入正确的包名有时可以添加。访问Unity的官方Package Registry网站如packages.unity.com查看所有可用包的列表和描述。在Unity官方论坛或文档中搜索你需要的功能如“first person sample”查看最新的官方推荐包是什么。6.3 场景三输入系统冲突与性能问题同时使用旧的Input Manager和新的Input System在Player Settings中设置为“Both”可能会导致输入事件被处理两次或者在某些设备上产生意外行为。黄金法则对于新项目强烈建议只使用新的Input System。在Player Settings中只选择“Input System Package (New)”。这样能避免潜在的冲突并获得新输入系统带来的所有性能优势和功能如更好的手柄支持、输入重绑定、动作组合等。性能注意新的Input System是基于事件的效率很高。但如果你的游戏对象非常多每个对象都挂载了PlayerInput组件并监听输入可能会产生不必要的开销。通常一个玩家角色或一个全局输入管理器持有PlayerInput组件就足够了其他脚本通过C#事件或查找该管理器来获取输入状态。Standard Assets的“消失”标志着一个时代的结束也标志着Unity开发走向更专业、更工程化的新阶段。拥抱Package Manager理解模块化依赖学会从官方包和Asset Store精准获取资源是现代Unity开发者的必备技能。别再纠结于那个找不到的旧包你手中的工具比它更强大、更灵活。

相关新闻

DeepSeek-V3.2-Exp模型在A3架构下的64K上下文性能优化

DeepSeek-V3.2-Exp模型在A3架构下的64K上下文性能优化

1. 项目背景与核心目标 这个标题描述的是DeepSeek-V3.2-Exp模型在特定硬件配置下的性能表现。从标题可以拆解出几个关键信息点: 模型版本:DeepSeek-V3.2-Exp(实验版本) 上下文长度:64K tokens 处理能力:…

2026/10/13 17:49:54 阅读更多 →
终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验

终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验

终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 在当今数字时代&…

2026/10/11 14:38:38 阅读更多 →
Vue Mixin核心原理与实战应用指南

Vue Mixin核心原理与实战应用指南

1. Vue Mixin 的本质与核心价值在Vue.js开发中,Mixin(混合)是一种极为灵活的代码复用机制。简单来说,它就像是一个可插拔的功能模块包,允许你将一组组件选项、逻辑方法或生命周期钩子"混入"到多个组件中。不…

2026/10/12 22:25:10 阅读更多 →

最新新闻

PS5串流实战指南:从局域网到外网的远程游戏配置与延迟优化

PS5串流实战指南:从局域网到外网的远程游戏配置与延迟优化

直接接PS5玩家一个很现实的问题:这台机器买回来之后,是不是基本就长在客厅电视柜上了?客厅被占、卧室想玩、出差想刷两把,每次都只能乖乖回到电视前。我捣鼓AnyPS5这套串流方案,就是为了把这台主机从HDMI线的长度里解放…

2026/10/13 20:09:06 阅读更多 →
若依vue3前端页面框架:路由联动、权限指令与缓存机制解析

若依vue3前端页面框架:路由联动、权限指令与缓存机制解析

简介:若依vue3前端页面框架是一套基于Vue3与Element Plus的开源后台管理前端解决方案,面向需要快速搭建企业级系统的开发团队及初中级前端工程师,适用于中后台管理系统、权限控制界面、数据看板等典型场景。压缩包共299个文件、约3MB&#xf…

2026/10/13 20:09:06 阅读更多 →
嵌入式视觉系统中MT9M001C到LCD的端到端时序设计

嵌入式视觉系统中MT9M001C到LCD的端到端时序设计

简介:本资源是面向FPGA初学者与嵌入式图像处理学习者的实战项目,聚焦于MT9M001 CMOS图像传感器的驱动与实时显示实现,适用于基于Altera/Intel FPGA平台的开发板验证与课程实验。项目完整呈现了从传感器数据采集、FPGA逻辑控制(含时…

2026/10/13 20:09:06 阅读更多 →
PS5全机型优化指南:从版本识别、M.2扩展到HDMI 2.1设置与故障排查

PS5全机型优化指南:从版本识别、M.2扩展到HDMI 2.1设置与故障排查

如果你手头有一台 PS5,或者正打算入手,不管是初版、轻薄版还是 Pro 版,这篇文章都是给你准备的。我写这个东西的起因很简单:群里隔三差五就有人问"我这个 PS5 为什么风扇声音这么大""到底要不要上 Pro""…

2026/10/13 20:09:06 阅读更多 →
STM32跑马灯实验详解:从时钟配置到GPIO驱动与工程下载

STM32跑马灯实验详解:从时钟配置到GPIO驱动与工程下载

简介:这份资源是面向嵌入式初学者与STM32入门者的跑马灯实验例程包,围绕GPIO输出控制这一核心知识点,帮助读者快速上手STM32微控制器的基本开发流程。资源以ALIENTEK MINISTM32开发板为硬件平台,配套完整工程代码与详细注释&#…

2026/10/13 20:09:06 阅读更多 →
Steinberg VST插件开发包入门:从零构建VST3音频插件

Steinberg VST插件开发包入门:从零构建VST3音频插件

简介:Steinberg VST插件开发包(VST3 SDK 3.5版)面向音频插件开发者、音乐软件工程师及数字音频工作站扩展爱好者,提供创建虚拟乐器与音频效果处理器所需的完整开发环境。包内共5764个文件,以html文档、png界面素材、h头…

2026/10/13 20:08:06 阅读更多 →

日新闻

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

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

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

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

2026/10/13 16:22:04 阅读更多 →
影刀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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →