news 2026/7/11 10:08:43

Unity AR开发入门:从引擎基础到AR Foundation实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity AR开发入门:从引擎基础到AR Foundation实战

1. 项目概述:从零开始的Unity AR开发之旅

如果你对“Unity引擎开发:Unity基础入门_Unity增强现实(AR)开发”这个标题感兴趣,大概率是两种情况:要么你是个游戏开发新手,想从Unity这个最流行的引擎入手,顺便探索一下AR这个酷炫的方向;要么你已经是个程序员,想拓展自己的技能树,把虚拟内容叠加到现实世界。无论哪种,你找对地方了。AR开发听起来高大上,但它的起点,恰恰是掌握好Unity这个工具本身。很多人一上来就想做复杂的AR交互,结果连Unity里一个简单的物体都控制不好,最后卡在基础操作上。这篇内容,我会带你走一遍我当年从零开始摸索AR开发的完整路径,把那些官方文档里一笔带过、但实际开发中又至关重要的“坑”和“技巧”都摊开来讲。我们的目标很明确:在夯实Unity核心操作的基础上,快速搭建起你的第一个可交互AR应用。这不仅仅是学几个AR SDK的API调用,更是理解如何在Unity的框架下,处理虚实结合的逻辑。你会发现,当Unity基础打牢后,AR开发中80%的难题,其实都是Unity引擎层面的问题。

2. 核心思路与工具选型:为什么是Unity + AR Foundation?

在开始敲代码之前,我们得先想清楚技术栈。AR开发有好多条路,比如直接用苹果的ARKit或者谷歌的ARCore原生开发,那为什么我们非要绕个弯,用Unity呢?这里面的核心逻辑在于效率与跨平台。Unity本质上是一个强大的内容创作与渲染引擎,它帮你处理了最复杂的图形渲染、物理模拟、音频管理等工作。你用Unity写好一套逻辑,可以相对轻松地发布到iOS、Android甚至一些AR眼镜设备上。而如果你分别用Swift和Kotlin去写ARKit和ARCore,相当于要维护两套完全不同的代码和资源,成本陡增。

所以,我们的技术栈很清晰:Unity引擎作为内容创作与渲染核心,AR Foundation作为与设备AR能力(ARKit/ARCore)通信的桥梁。AR Foundation是Unity官方推出的一个抽象层,它定义了一套统一的API。当你的应用在iOS上运行时,它背后调用的是ARKit;在Android上运行时,自动切换为ARCore。这让你可以用同一套C#脚本,管理不同平台上的AR会话、平面检测、图像识别等功能。

注意:这里有一个非常重要的前期决策点——Unity版本的选择。AR Foundation和底层ARKit/ARCore插件更新频繁。为了获得最好的兼容性和最新的功能(比如iOS上的ARKit 6或ARCore的深度API),我强烈建议你使用Unity Hub安装长期支持版中的较新版本,例如2022 LTS或2023 LTS。避免使用太老的版本(如2019),也谨慎使用最新的技术预览版,前者可能缺少关键功能,后者可能不稳定。你搜索热词里的“unity下载”、“unityhub下载unity”就是为这一步准备的。

除了Unity Editor和AR Foundation,你还需要根据目标平台安装对应的支持模块:

  • 针对iOS开发:需要在Unity中安装“iOS Build Support”模块。并且,最终打包需要在macOS系统上进行,因为需要Xcode。
  • 针对Android开发:需要在Unity中安装“Android Build Support”模块,并配置好Android SDK & NDK路径。热词中“gradle 镜像 unity”很可能就是有人在为Android构建时,下载Gradle依赖太慢,在寻找国内镜像解决方案。

工具选型定了,我们的开发路径也就明确了:先花时间熟悉Unity编辑器的基础操作和C#脚本编程,这是你的“内功”;然后引入AR Foundation,学习如何启动AR相机、检测平面,这是你的“招式”;最后将两者结合,在检测到的真实平面上放置、操控虚拟物体,完成从“看到AR”到“玩转AR”的跨越。

3. Unity核心基础快速上手:不止是拖拽物体

很多教程一上来就教你怎么拖一个Cube到场景里,这没错,但远远不够。为了后续AR开发不迷路,我们需要深入理解几个核心概念,它们是你构建任何交互的基石。

3.1 场景、游戏对象与组件:一切皆可组装

Unity的世界是由场景组成的,一个场景就是一个独立的关卡或界面。场景里的一切,无论是一个3D模型、一盏灯,还是一个看不见的管理器,都是一个游戏对象。你可以把游戏对象想象成一个空壳,它本身什么也做不了。

让这个空壳拥有特定功能的,是组件。组件是附加在游戏对象上的功能模块。比如,加上Transform组件,它就有了位置、旋转、缩放;加上Mesh RendererMesh Filter组件,它就能显示为一个3D模型;加上Rigidbody组件,它就会受到物理引擎的影响下落或碰撞。

这个“对象-组件”模式是Unity设计的精髓。在AR开发中,你的虚拟角色、UI按钮、甚至那个代表检测到平面的可视化Prefab,都是游戏对象。而控制它们AR特性的,就是AR Foundation提供的一系列组件,比如AR Plane(平面)、AR Anchor(锚点)。

实操心得:我习惯在项目初期就创建几个空对象作为“管理器”,比如GameManagerARManagerUIManager。把相关的控制脚本挂在这些对象上,而不是散落在各个物体上,这样代码结构清晰,易于维护。热词里“unity编辑器物体批量添加组件”这个需求,其实可以通过写一个小编辑器脚本工具来实现,但对于新手,更实用的方法是先理解组件模式,手动管理。

3.2 C#脚本编程:让一切动起来

Unity使用C#作为脚本语言。脚本本身也是一种组件,你把它拖到游戏对象上,就赋予了该对象自定义的行为逻辑。

对于AR开发,你至少需要掌握:

  1. Start() 和 Update() 方法Start在游戏对象初始化时执行一次,适合做初始化;Update每一帧都执行,适合处理持续的逻辑,如触摸输入。
  2. 公开变量与序列化:在脚本中声明public变量,在Unity编辑器里就能直接赋值或拖拽引用,这比硬编码灵活太多。比如,你可以声明一个public GameObject modelPrefab;,然后在编辑器里把准备好的模型预制体拖进去。
  3. 常用API
    • GameObject.Instantiate(): 动态生成一个游戏对象(预制体)。
    • Input.GetTouch(): 获取移动设备的触摸输入,这是AR应用交互的主要方式。
    • Transform组件:通过gameObject.transform.positionrotation来移动和旋转物体。

一个典型的AR放置物体的脚本雏形是这样的:

using UnityEngine; public class ARPlacementController : MonoBehaviour { public GameObject placementIndicator; // 一个用于显示放置预览的物体 public GameObject objectToPlace; // 要放置的模型预制体 private Pose placementPose; // 记录准备放置的位置和姿态 private bool placementPoseIsValid = false; void Update() { UpdatePlacementPose(); // 每帧更新放置点的位置(通常基于射线检测) UpdatePlacementIndicator(); // 根据有效性更新预览指示器的显示 if (placementPoseIsValid && Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { PlaceObject(); // 如果触摸开始且位置有效,则放置物体 } } void UpdatePlacementPose() { // 这里简化了,实际会用到AR Raycast来检测真实世界平面 // 暂时用鼠标模拟触摸 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { placementPose.position = hit.point; placementPose.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); placementPoseIsValid = true; } else { placementPoseIsValid = false; } } void PlaceObject() { Instantiate(objectToPlace, placementPose.position, placementPose.rotation); } }

避坑指南:新手常犯的一个错误是在Update里执行过于频繁或昂贵的操作(比如每帧都Instantiate),这会导致性能卡顿。在AR中,性能尤其关键,因为手机同时要处理摄像头画面和计算机视觉算法。务必确保你的逻辑是高效的。

3.3 预制体与资源管理:你的数字资产库

当你制作好一个复杂的虚拟物体(比如一个带动画和音效的AR小恐龙)后,肯定希望能在不同地方重复使用它。这时就需要把它做成预制体。预制体是一个存储在项目中的模板,你可以在场景中多次实例化它,所有实例都关联到同一个模板。修改预制体资源,所有实例都会同步更新(除非某些属性被实例单独覆盖)。

在AR项目中,你会创建很多预制体:不同的可放置模型、UI面板、特效等。良好的预制体管理能极大提升开发效率。

关于热词“unity addressables打包后tmp材质紫了”:这是一个非常具体且棘手的问题。Addressables是Unity的高级资源管理系统,用于实现资源热更新和按需加载。TMP是TextMeshPro,Unity强大的文本渲染工具。“材质紫了”通常意味着材质球丢失或Shader不匹配。当使用Addressables打包时,如果材质或其依赖的Shader没有被正确标记和打包进同一个资源组,在运行时加载时就会找不到,显示为Unity默认的洋红色(紫色)。解决方案是检查Addressables Groups的依赖关系,确保TMP材质及其使用的Shader都被包含在内,或者考虑将相关资源放在同一个AssetBundle中。

4. 引入AR Foundation:连接虚拟与现实的桥梁

当你的Unity基础已经能让你自如地创建和控制场景中的物体时,就可以把AR Foundation请进来了。这一步,我们要把手机的摄像头变成我们的游戏视图,并让Unity理解真实世界的空间。

4.1 环境配置与基础设置

首先,通过Unity的Package Manager,安装AR Foundation,以及对应目标平台的包:ARCore XR Plugin(针对Android)和/或ARKit XR Plugin(针对iOS)。

安装后,你需要对项目进行关键设置:

  1. 图形管线:URP是当前移动端AR项目的推荐选择。它性能更好,对移动设备优化更到位。在Package Manager中安装Universal RP,然后创建URP Asset并分配给Graphics Settings。热词中“unity uishader”可能与此相关,因为UI在URP下有时需要特殊处理。
  2. 项目设置
    • Player Settings -> Other Settings:确保Auto Graphics API关闭,对于Android,只保留OpenGLES3(兼容性最好);对于iOS,只保留Metal
    • Android:设置最低API Level(通常24+),并勾选ARCore RequiredARCore Optional
    • iOS:在Camera Usage Description中填写请求摄像头权限的描述,如“此应用需要使用摄像头来提供AR体验”。

4.2 构建第一个AR场景:从平面检测开始

一个最基础的AR场景需要以下核心游戏对象和组件:

  1. AR Session:一个空对象,挂载ARSession组件。它管理整个AR生命周期(启动、暂停、重置)。
  2. AR Session Origin:这是整个AR世界的根节点。挂载ARSessionOrigin组件。你场景中所有要放置的虚拟内容,都应该作为它的子物体。它的Camera子物体(自动生成)就是你的AR摄像头。
  3. AR Plane Manager:在AR Session Origin上挂载ARPlaneManager组件。它会自动检测现实世界中的水平面(如地板、桌面),并为每个检测到的平面生成一个带有ARPlane组件的游戏对象。

实操步骤

  1. 创建空对象,重命名为“AR Session”,添加ARSession组件。
  2. 创建空对象,重命名为“AR Session Origin”,添加ARSessionOrigin组件。
  3. 选中“AR Session Origin”,在Inspector窗口点击“Add Component”,添加ARPlane Manager
  4. 为了可视化检测到的平面,我们需要一个预制体。在ARPlane ManagerPlane Prefab字段,可以指定一个用于可视化平面的预制体。Unity AR Foundation示例包里通常包含一个简单的Debug Plane预制体,你可以先用它。如果没有,可以自己创建一个简单的Quad(正方形面片)并赋予一个半透明的材质。

运行项目,将手机对准一个平坦的桌面或地板,你应该能看到有半透明的网格面片出现,并随着摄像头移动而扩展。恭喜,你的Unity应用已经“看见”了真实世界!

4.3 在检测到的平面上放置物体

这是将Unity基础与AR能力结合的关键一步。我们需要扩展之前的ARPlacementController脚本,使其与AR Foundation交互。

核心思路是:使用ARRaycastManager组件(同样挂在AR Session Origin上)从屏幕触摸点向真实世界发射射线,如果击中AR Plane Manager检测到的平面,就在击中点实例化我们的模型。

using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems; public class ARPlacementController : MonoBehaviour { public GameObject objectToPlace; // 要放置的预制体 public GameObject placementIndicator; // 放置预览指示器 private ARRaycastManager raycastManager; private Pose placementPose; private bool placementPoseIsValid = false; void Start() { // 获取ARRaycastManager组件 raycastManager = FindObjectOfType<ARRaycastManager>(); if (raycastManager == null) { Debug.LogError("ARRaycastManager not found in scene."); } } void Update() { UpdatePlacementPose(); UpdatePlacementIndicator(); // 检测触摸 if (placementPoseIsValid && Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { PlaceObject(); } } void UpdatePlacementPose() { // 从屏幕中心发射射线(简单起见,你也可以用第一个触摸点) var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f)); var hits = new List<ARRaycastHit>(); // 进行AR射线检测,只检测已跟踪的平面 if (raycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinPolygon)) { placementPoseIsValid = true; placementPose = hits[0].pose; // 让放置的物体朝向相机(更自然),但保持Y轴与世界向上一致 var cameraForward = Camera.main.transform.forward; var cameraBearing = new Vector3(cameraForward.x, 0, cameraForward.z).normalized; placementPose.rotation = Quaternion.LookRotation(cameraBearing); } else { placementPoseIsValid = false; } } void UpdatePlacementIndicator() { if (placementIndicator != null) { placementIndicator.SetActive(placementPoseIsValid); if (placementPoseIsValid) { placementIndicator.transform.SetPositionAndRotation(placementPose.position, placementPose.rotation); } } } void PlaceObject() { Instantiate(objectToPlace, placementPose.position, placementPose.rotation); } }

把这个脚本挂到AR Session Origin上,并把你的模型预制体和指示器预制体拖拽赋值。运行后,屏幕中心会有一个指示器跟随检测到的平面移动,点击屏幕,模型就会被“钉”在那个真实的位置上。

5. 进阶交互与功能实现

当基础放置功能实现后,我们可以让AR体验更丰富。这里涉及更多Unity与AR Foundation的深度结合。

5.1 物体选择、移动与旋转

放置之后,用户可能想调整位置。这需要实现点选和拖拽逻辑。

  1. 点选:从触摸点发射一条射线(可以是普通Physics.Raycast,如果虚拟物体有碰撞体;或者用ARRaycast结合特定层),检测击中的物体。
  2. 拖拽:当选中一个物体后,在后续的触摸移动中,持续进行AR射线检测(击中平面),并将选中物体的位置更新到新的射线击中点。
  3. 旋转与缩放:可以通过双指手势来实现。计算双指触摸点的距离变化(缩放)和角度变化(旋转),应用到选中物体的Transform上。

注意事项:直接修改物体的Transform可能会导致物体与AR世界“脱锚”,看起来像是在空中漂移。更佳实践是使用AR Foundation的ARAnchor。当你移动物体时,实际上是在销毁旧的Anchor并在新位置创建新的Anchor,然后将物体作为新Anchor的子物体。这能确保虚拟物体与真实世界的空间关系被AR系统更稳定地追踪。

5.2 光照估计与环境融合

为了让虚拟物体看起来更真实地“坐”在真实环境中,我们需要匹配环境光照。AR Foundation的ARLightEstimation组件可以提供环境光强度、颜色温度等信息。

  • 你可以获取ARLightEstimation.currentMainLightIntensity来调整场景中平行光的强度。
  • 获取ARLightEstimation.colorCorrection来调整一个全局后处理色调,让虚拟物体的颜色与周围环境更协调。

实操心得:环境光估计在不同设备上效果差异很大。不要过度依赖它,最好提供一个手动调整光照强度的UI滑块作为备选。同时,为你的虚拟物体使用PBR材质,它们对光照的反应更真实,能更好地融入环境。

5.3 图像识别与跟踪

除了平面,AR Foundation还支持基于预设图片的识别与跟踪。这可以用来做AR卡片、海报互动。

  1. 准备一张高对比度、纹理丰富的参考图片,导入Unity。
  2. 在AR Session Origin上添加ARTrackedImageManager组件。
  3. 创建一个XR Reference Image Library,把你的参考图片添加进去,并设置物理尺寸。
  4. 将图库分配给ARTrackedImageManager
  5. 订阅ARTrackedImageManager.trackedImagesChanged事件。当摄像头识别到图片时,事件会触发,你可以获取到ARTrackedImage对象,其transform属性就代表了图片在真实世界中的位置和姿态。此时,你可以实例化一个模型,并将其父级设置为这个ARTrackedImagetransform,模型就会牢牢地“贴”在图片上。

这个功能对营销、教育类AR应用非常有用。

6. 性能优化与调试技巧实录

AR应用是性能敏感型应用。手机同时要处理高清摄像头数据流、复杂的计算机视觉算法、3D图形渲染。任何一方面的低效都会导致发热、卡顿、掉帧,严重影响体验。

6.1 渲染性能优化

  1. 模型与面数:移动端AR模型必须低模化。单个模型面数最好控制在1万面以下,整个场景同时显示的面数不要超过10万。使用法线贴图、AO贴图来模拟高模细节。
  2. 材质与Shader:使用URP提供的Lit Shader,并尽量合并材质球。减少透明物体的使用,特别是半透明重叠。热词中“unity性能优化”是永恒的主题。
  3. 光照与阴影:实时阴影在移动端开销巨大。在AR中,可以考虑使用“假阴影”(即一个跟随物体的半透明黑色面片)来替代。减少动态光源,多用烘焙光照或环境光。
  4. 分辨率与抗锯齿:适当降低渲染分辨率(通过XRSettings.renderViewportScale)能显著提升帧率。抗锯齿优先使用FXAA或SMAA,避免MSAA。

6.2 脚本与逻辑优化

  1. 避免每帧昂贵的操作:不要在Update中做GameObject.FindGetComponentInstantiate/Destroy(对象池是好朋友)、复杂的物理计算。
  2. 使用协程:对于非即时需要的操作,如网络请求、资源加载,使用StartCoroutine,避免阻塞主线程。
  3. AR会话管理:当应用进入后台时,暂停AR会话(ARSession.enabled = false);回到前台时再恢复。这能节省电量。

6.3 调试与问题排查

开发过程中,你肯定会遇到各种奇怪问题。以下是一些常见问题及排查思路:

问题现象可能原因排查步骤
运行后黑屏,只有UIAR相机未正确初始化;图形API不兼容1. 检查AR SessionAR Session Origin是否在场景中且启用。
2. 检查Player Settings中的Graphics API设置是否正确。
3. 查看Console日志,是否有AR相关的错误(如权限被拒)。
平面检测不到或非常慢环境光线太暗或纹理缺失;设备不支持1. 确保在光线充足、纹理丰富的环境下测试(如木地板、带图案的桌面)。
2. 检查设备是否在ARKit/ARCore支持列表中。
放置的物体抖动或漂移跟踪丢失;锚点未正确使用1. 确保环境有足够的视觉特征供AR系统跟踪。
2. 考虑使用ARAnchor来稳定物体位置,而不是直接修改其Transform。
打包后安装崩溃权限未声明;库文件冲突1. 检查AndroidManifest或iOS的Info.plist是否包含了摄像头权限声明。
2. 检查是否包含了所有必要的依赖库(如ARCore/ARKit原生库)。
3. 尝试创建一个最简AR场景打包测试,以排除项目其他部分的影响。
在编辑器里正常,真机不行编辑器与真机环境差异1. Unity Editor的AR模拟和真机有本质区别。所有AR功能测试务必在真机上进行。
2. 使用Development Build并启用脚本调试,通过ADB(Android)或Xcode(iOS)查看真机日志。

关于热词“unity webgl初始化很久”:虽然WebGL不是AR开发的主流平台(因为无法直接访问摄像头),但这个问题很典型。WebGL初始化慢通常是因为首包资源太大。解决方案包括:使用Addressables进行资源分包和异步加载;开启引擎代码裁剪;压缩纹理和音频;避免在启动时加载所有资源。

7. 从Demo到产品:工程化与扩展思考

当你成功做出一个在手机上稳定运行的AR小Demo后,如何把它变成一个真正的产品?这里有几个方向供你深入。

7.1 多场景管理与UI系统

一个完整的AR应用不可能只有一个场景。你需要启动页、主菜单、AR体验场景、设置页面等。Unity的SceneManager用于场景切换。结合一个UI框架(如Unity原生的UGUI,或第三方插件如DoTween制作动画),来构建流畅的用户界面。记住,AR场景的UI通常需要是“世界空间”渲染,而不是“屏幕空间”,这样UI才能看起来是固定在真实世界中的某个位置。

7.2 数据持久化与网络

你的AR模型参数、用户摆放的位置信息可能需要保存。简单的数据可以用PlayerPrefs,复杂结构建议用JsonUtility序列化后存为文件。如果需要云端同步或下载新的AR内容,就要引入网络模块。Unity自带的UnityWebRequest或第三方库如Best HTTP都是不错的选择。注意处理网络请求的异步性和错误重试机制。

7.3 针对特定设备的优化

虽然AR Foundation提供了跨平台抽象,但不同设备仍有特性差异。例如,某些安卓机型的ARCore性能较弱,可能需要降低平面检测的刷新频率或关闭点云可视化。iOS设备上的ARKit对人脸跟踪、多人共享AR会话支持更好。你可以通过Application.platformSystemInfo.deviceModel来做一些条件编译或运行时判断,提供差异化的体验。

7.4 关注前沿工具与社区

Unity生态非常活跃。关注Asset Store上评价高的AR相关插件(如用于制作复杂AR交互的LeanTouch,用于手势识别的插件),它们能极大提升开发效率。多逛Unity官方论坛、GitHub上的AR项目,学习别人的架构和代码。热词中提到的“unity ai navigation”、“unity ecs”等,代表了Unity在AI导航和面向数据的技术栈方向上的进展,虽然它们可能不直接用于你的第一个AR项目,但了解这些方向能让你知道技术的边界在哪里。

最后,我想分享一个最深的体会:AR开发的魅力在于它打破了数字与物理的界限,但挑战也在于此。你不仅要考虑虚拟世界的逻辑,还要时刻考虑真实世界的约束——光线、空间、用户行为。最好的学习方式就是不断在真机上测试,把你的应用拿到不同的房间、不同的光照条件下跑一跑,你会发现很多在编辑器里想象不到的问题。从在桌面上放一个稳稳的立方体开始,逐步增加交互、动画、联机功能,每一步都扎实地解决遇到的具体问题,你就能从一个Unity新手,成长为能够创造沉浸式AR体验的开发者。这条路有坑,但沿途的风景绝对值得。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 10:08:17

Python 字符串 is*() 方法全解析:15个方法速查与 3 个典型误用场景

Python 字符串 is*() 方法全解析&#xff1a;15个方法速查与3个典型误用场景 在Python开发中&#xff0c;字符串处理是最基础也最频繁的操作之一。 is*() 系列方法作为字符串类型的内置校验工具&#xff0c;看似简单却暗藏玄机。本文将系统梳理全部15个 is*() 方法&#xf…

作者头像 李华
网站建设 2026/7/11 10:07:33

Node-RED 2.x Inject节点定时配置:3种Cron表达式实战与常见误区解析

Node-RED 2.x Inject节点定时配置&#xff1a;3种Cron表达式实战与常见误区解析 在物联网和自动化流程开发中&#xff0c;精确的时间控制往往是核心需求。Node-RED作为低代码集成工具&#xff0c;其Inject节点的定时功能通过Cron表达式提供了强大的调度能力。本文将深入解析三种…

作者头像 李华
网站建设 2026/7/11 10:06:57

如何快速搭建FOC双轮腿机器人:开源平衡机器人完整教程

如何快速搭建FOC双轮腿机器人&#xff1a;开源平衡机器人完整教程 【免费下载链接】foc-wheel-legged-robot Open source materials for a novel structured legged robot, including mechanical design, electronic design, algorithm simulation, and software development. …

作者头像 李华
网站建设 2026/7/11 10:05:50

Claude Fable 5 AI编程助手功能解析与付费延期技术评估

Claude Fable 5 付费计划延长至7月12日&#xff0c;这背后到底意味着什么&#xff1f;如果你正在考虑是否要升级到付费版本&#xff0c;或者想知道这个延期对普通用户有什么实际影响&#xff0c;那么这篇文章就是为你准备的。 最近很多开发者都在讨论 Claude Fable 5 的付费计…

作者头像 李华
网站建设 2026/7/11 10:03:38

wdy命运2单机版的搭建步骤和GM工具的用法

进服务器后&#xff0c;打开桌面上的1&#xff0c;2&#xff0c;3&#xff0c;启动后就是这个界面注册账号打开桌面上的GM工具。注册方法有点特殊。需要再文件夹里选择用户名首字母开头的文件夹。看动图演示。启动游戏打开这个wyd.exe。如果打不开可以尝试用兼容模式打开。发物…

作者头像 李华
网站建设 2026/7/11 10:02:32

接口地址少了 `/v1`,为什么会报错

接口地址少了 /v1&#xff0c;为什么会报错 很多 AI 软件在配置供应商时&#xff0c;都会让你填写一个 Base URL。有时候文档、控制台、别人分享的地址看起来都差不多&#xff0c;但实际能不能用&#xff0c;关键往往差在最后的 /v1。 比如原来填的是&#xff1a; https://api.…

作者头像 李华