当前位置: 首页 > news >正文

【Unity笔记】Unity超时检测器开发:支持自定义重试次数与事件触发

在这里插入图片描述


在Unity游戏或应用开发中,我们经常会遇到需要检测超时的场景,比如:

  • 等待用户在限定时间内完成某个交互;
  • 等待网络请求或资源加载是否在规定时间内返回;
  • 控制AI角色等待某个事件发生,超时后执行备选逻辑。

在这些场景中,如果仅检测一次是否超时,可能不够灵活。因此,我们本篇博客将带你一步步开发一个可复用的 TimeoutDetector Unity组件,支持以下功能:

  • 自定义超时时间;
  • 超时后自动重新检测;
  • 支持设置最大重试次数;
  • 每次超时与最终失败都能触发 UnityEvent;
  • 可用于编辑器按钮中一键添加到 GameObject。

一、设计思路

我们希望 TimeoutDetector 具备如下能力:

  1. 计时:从调用 StartDetection() 开始倒计时,若超出 timeoutDuration 则触发超时逻辑;
  2. 重试机制:超时后自动重新计时,直到达到 maxRetryCount 次;
  3. 事件触发:每次超时与最终失败都通过 UnityEvent 通知外部;
  4. 灵活配置:可在 Inspector 中设置超时时间、最大重试次数;
  5. 可复用组件:挂载即可使用,便于不同场景复用。

二、核心代码实现

以下是完整的 TimeoutDetector.cs 脚本代码:

using UnityEngine;
using UnityEngine.Events;public class TimeoutDetector : MonoBehaviour
{[Tooltip("超时时间(秒)")]public float timeoutDuration = 5f;[Tooltip("最大重试次数")]public int maxRetryCount = 3;[Tooltip("每次超时时触发的事件")]public UnityEvent onTimeout;[Tooltip("达到最大重试次数时触发的事件")]public UnityEvent onMaxRetryReached;private int currentRetryCount = 0;private float timer = 0f;private bool isTiming = false;/// <summary>/// 开始计时检测/// </summary>public void StartDetection(){currentRetryCount = 0;RestartTimer();}/// <summary>/// 手动停止检测/// </summary>public void StopDetection(){isTiming = false;timer = 0f;}private void RestartTimer(){timer = 0f;isTiming = true;}private void Update(){if (!isTiming) return;timer += Time.deltaTime;if (timer >= timeoutDuration){HandleTimeout();}}private void HandleTimeout(){isTiming = false;onTimeout?.Invoke();currentRetryCount++;if (currentRetryCount < maxRetryCount){Debug.Log($"Timeout occurred. Retrying {currentRetryCount}/{maxRetryCount}...");RestartTimer(); // 再次启动超时检测}else{Debug.LogWarning("Max retry count reached.");onMaxRetryReached?.Invoke(); // 触发最终失败事件}}
}

三、组件使用方式

1. 添加组件到物体

你可以手动添加 TimeoutDetector 到任意 GameObject,或使用我们提供的编辑器菜单:

using UnityEditor;
using UnityEngine;public class TimeoutTool : EditorWindow
{[MenuItem("Tools/Add TimeoutDetector Component")]public static void AddTimeoutDetector(){GameObject selected = Selection.activeGameObject;if (selected != null){AddComponentIfMissing<TimeoutDetector>(selected);}else{Debug.LogError("请先选择一个 GameObject!");}}private static void AddComponentIfMissing<T>(GameObject obj) where T : Component{if (obj.GetComponent<T>() == null){obj.AddComponent<T>();Debug.Log($"已添加组件:{typeof(T).Name}");}else{Debug.Log($"{typeof(T).Name} 已存在!");}}
}

菜单路径:Tools → Add TimeoutDetector Component


2. 场景中使用示例

public class TestTimeout : MonoBehaviour
{public TimeoutDetector detector;private void Start(){detector.onTimeout.AddListener(OnRetry);detector.onMaxRetryReached.AddListener(OnFail);detector.StartDetection(); // 启动检测}void OnRetry(){Debug.Log("超时一次,正在自动重试...");}void OnFail(){Debug.LogError("超时重试已达最大次数!");}
}

你可以通过 Unity Inspector 绑定事件,或通过代码注册监听器。


四、应用场景举例

1. 网络请求等待超时

// 模拟:5秒内必须收到响应,否则重试3次
timeoutDetector.onTimeout.AddListener(() => RetryRequest());
timeoutDetector.onMaxRetryReached.AddListener(() => ShowNetworkError());
timeoutDetector.StartDetection();

2. 等待玩家交互

timeoutDetector.timeoutDuration = 10f;
timeoutDetector.maxRetryCount = 1;timeoutDetector.onTimeout.AddListener(() => {Debug.Log("玩家超时未响应,默认选择第一个选项");ApplyDefaultChoice();
});
timeoutDetector.StartDetection();

五、优化建议与扩展方向

为了让该组件更加健壮和灵活,你还可以做如下扩展:

扩展方向说明
✅ 支持暂停恢复Pause 状态下停止计时,恢复后继续
✅ 显示倒计时将 timer 显示到 UI
✅ 多状态触发比如触发每秒回调,用于动态显示
✅ 支持协程实现通过 IEnumerator 实现更清晰的控制流程

六、总结

本文从零实现了一个支持自动重试的 Unity 超时检测组件 TimeoutDetector,它具备以下优点:

  • 简洁易用,挂载即用;
  • 高度复用,可应用于网络、交互、AI 等场景;
  • 支持事件响应,方便扩展与组合逻辑;
  • 可自定义超时时间与重试次数,适配不同业务需求。

通过本示例,你不仅能掌握 Unity 中的组件开发技巧,还能理解如何用面向对象的思维编写可复用的逻辑工具。希望对你在项目中实现更智能、更稳定的逻辑控制有所帮助。


👉 新开专栏《VR 360°全景视频开发》,持续更新中,敬请关注!

【专栏预告】《VR 360°全景视频开发:从GoPro到Unity VR眼镜应用实战》

《VR 360°全景视频开发》将带你深入探索从GoPro拍摄到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360°全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。敬请关注每周更新的技术分享!


相关文章:

【Unity笔记】Unity超时检测器开发:支持自定义重试次数与事件触发

在Unity游戏或应用开发中&#xff0c;我们经常会遇到需要检测超时的场景&#xff0c;比如&#xff1a; 等待用户在限定时间内完成某个交互&#xff1b;等待网络请求或资源加载是否在规定时间内返回&#xff1b;控制AI角色等待某个事件发生&#xff0c;超时后执行备选逻辑。 在…...

【微服务管理】注册中心:分布式系统的基石

在分布式系统日益普及的当下&#xff0c;如何高效地管理众多服务实例成为关键问题。注册中心应运而生&#xff0c;它犹如分布式系统的 “指挥中枢”&#xff0c;承担着服务注册、发现等核心任务&#xff0c;为整个系统的稳定运行和高效协作提供坚实保障。本文将深入探讨注册中心…...

P10413 [蓝桥杯 2023 国 A] 圆上的连线

题意&#xff1a; 给定一个圆&#xff0c;圆上有 n2023 个点从 1 到 n 依次编号。 问有多少种不同的连线方式&#xff0c;使得完全没有连线相交。当两个方案连线的数量不同或任何一个点连接的点在另一个方案中编号不同时&#xff0c;两个方案视为不同。 答案可能很大&#x…...

计算机操作系统——存储器管理

系列文章目录 1.存储器的层次结构 2.程序的装入和链接 3.连续分配存储管理方式&#xff08;内存够用&#xff09; 4.对换&#xff08;Swapping&#xff09;(内存不够用) 5.分页存储管理方式 6.分段存储管理方式 文章目录 系列文章目录前言一、存储器的存储结构寄存器&…...

TCPIP详解 卷1协议 四 地址解析协议

4.1——地址解析协议(ARP) 对于TCP/IP网络&#xff0c;地址解析协议&#xff08;ARP&#xff09;[RFC0826]提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射。ARP仅用于IPv4。IPv6使用邻居发现协议&#xff0c;它被合并入ICMPv6。当两个局域网的主机之间传输的以太…...

履带小车+六轴机械臂(2)

本次介绍原理图部分 开发板部分&#xff0c;电源供电部分&#xff0c;六路舵机&#xff0c;PS2手柄接收器&#xff0c;HC-05蓝牙模块&#xff0c;蜂鸣器&#xff0c;串口&#xff0c;TB6612电机驱动模块&#xff0c;LDO线性稳压电路&#xff0c;按键部分 1、开发板部分 需要注…...

耘想WinNAS:以聊天交互重构NAS生态,开启AI时代的存储革命

一、传统NAS的交互困境与范式瓶颈 在传统NAS&#xff08;网络附加存储&#xff09;领域&#xff0c;用户需通过复杂的图形界面或命令行工具完成文件管理、权限配置、数据检索等操作&#xff0c;学习成本高且效率低下。例如&#xff0c;用户若需搜索特定文件&#xff0c;需手动…...

如何通过自动化解决方案提升企业运营效率?

引言 在现代企业中&#xff0c;运营效率直接影响着企业的成本、速度与竞争力。尤其是随着科技的不断发展&#xff0c;传统手工操作和低效的流程逐渐无法满足企业的需求。自动化解决方案正成为企业提升运营效率、降低成本和提高生产力的关键。无论是大型跨国公司&#xff0c;还…...

【笔记ing】AI大模型-03深度学习基础理论

神经网络&#xff1a;A neural network is a network or circuit of neurons,or in a modern sense,an artificial neural network,composed of artificial neurons or nodes.神经网络是神经元的网络或回路&#xff0c;或者在现在意义上来说&#xff0c;是一个由人工神经元或节…...

Spring-注解编程

注解基础概念 1.什么是注解编程 指的是在类或者方法上加入特定的注解(XXX) 完成特定功能的开发 Component public classXXX{} 2.为什么要讲注解编程 1.注解开发方便 代码简洁 开发速度大大提高 2.Spring开发潮流 Spring2.x引入注解 Spring3.x完善注解 Springboot普及 推广注解…...

大数据学习栈记——MongoDB安装

本文介绍NoSQL技术&#xff1a;MongoDB的安装。操作系统&#xff1a;Ubuntu24.04 MongoDB介绍 MongoDB是一个基于分布式文件存储的数据库&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之…...

linux 系统编程基础部分 day1

常用指令 创建修改用户组 查看当前用户组&#xff1a;whoami 创建用户 sudo adduser 用户 sudo addgroup 组名 添加权限&#xff1a;chmod [u,g,o,a][x,w,r] 数字表示法r4 w2 x1 chmod 471 每个权限种类想加 给文件换所属用户 chown 新用户名 文件名 chgrp …...

访问不到服务器上启动的llamafactory-cli webui

采用SSH端口转发有效&#xff0c;在Windows上面进行访问 在服务器上启动 llamafactory-cli webui 后&#xff0c;访问方式需根据服务器类型和网络环境选择以下方案&#xff1a; 一、本地服务器&#xff08;物理机/虚拟机&#xff09; 1. 直接访问 若服务器与操作设备处于同一…...

论文阅读笔记——Generating Long Sequences with Sparse Transformers

Sparse Transformer 论文 解决了 Transformer 在长序列建模时的计算开销和内存过大的问题。 可视化了一个 128 层自注意力在 CIFAR-10 的数据集上学习到的注意力模式&#xff0c;发现&#xff1a;1&#xff09;稀疏性普遍存在&#xff1a;大多数层在多数数据点上表现出稀疏注意…...

【信息系统项目管理师】高分论文:论信息系统项目的整合管理(旅游景区导游管理平台)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、制定项目章程二、制订项目管理计划三、指导和管理项目工作四、管理项目知识五、监控项目工作六、实施整体变更控制七、结束项目或阶段论文 在国家《中国旅游“十三五”发展规划信息化专项规划的背景下…...

C++ 用红黑树封装map/set

前言 一、源码结构分析 二、模拟实现map/set 2.1 套上KeyOfT 2.2 普通迭代器实现 2.3 const迭代器实现 2.4 解决key不能修改的问题 2.5 map的[]实现 2.6 map/set以及红黑树源码 2.6.1 RBTree.h 2.6.2 set.h 2.6.3 map.h 总结 前言 之前的文章讲解了红黑树的具体实…...

VirtualBox虚拟机与主机之间无法复制粘贴的问题

插入出现问题&#xff0c;需要把其他的dvd弹出&#xff0c;比如系统安装镜像。 https://www.cnblogs.com/jianmuzi/p/17788084.html...

【HDFS入门】HDFS核心组件Secondary NameNode角色职责与运行机制解析

目录 1 Secondary NameNode的角色定位与常见误解 2 核心职责详解 2.1 核心功能职责 2.2 与NameNode的协作关系 3 运行机制深度剖析 3.1 检查点触发机制 3.2 元数据合并流程 4 与Hadoop 2.0 HA架构的对比 5 配置调优指南 5.1 关键配置参数 5.2 性能优化建议 6 实践应…...

AI知识补全(十六):A2A - 谷歌开源的agent通信协议是什么?

名人说&#xff1a;一笑出门去&#xff0c;千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;AI知识补全&#xff08;十五&#xff09;&#xff1a;AI可解…...

OOM问题排查和解决

问题 java.lang.OutOfMemoryError: Java heap space 排查 排查手段 jmap命令 jmap -dump,formatb,file<file-path> <pid> 比如 jmap -dump:formatb,file./heap.hprof 44532 使用JVisualVM工具&#xff1a; JVisualVM是一个图形界面工具&#xff0c;它可以帮…...

黑马头条day01

1)课程对比 2)项目概述 2.1)能让你收获什么 2.2)项目课程大纲 2.3)项目概述 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&#xff0c;因此&#xff0c;对于移动资讯客户端的需求也越来越…...

关于IDEA中使用ctrl跳转源码出现???的解决方案

最近在学习大数据相关课程的时候使用ctrl查看源码时出现源码是问号的情况。写一篇博客来分享一下自己的解决方案&#xff1a; 但我使用ctrl查看源码的时候具体函数的细节使用???来代替&#xff0c;而且点击上方的Download按钮没有反应&#xff0c;这个时候我们需要手动指定…...

第三方API——Spring Boot 集成阿里云短信发送功能

目录 一. 创建阿里云OSS服务并获取密钥&#xff0c;开通短信服务 1.1 注册阿里云服务器 1.2 开通短信服务 1.3 创建对象存储OSS服务 1.4 RAM用户授权短信权限 1.5 新增用户并授权用户短信权限 1.6 获取 AccessKey ID 和 AccessKey Secret 二. 创建项目集成短信发送 2.1…...

【C++】前向声明(Forward Declaration)

前向声明&#xff08;Forward Declaration&#xff09;是在C、C等编程语言中&#xff0c;在使用一个类、结构体或其他类型之前&#xff0c;仅声明其名称而不给出完整定义的一种方式。 作用 减少编译依赖&#xff1a;当一个源文件包含大量头文件时&#xff0c;编译时间会显著增…...

Golang|抽奖相关

文章目录 抽奖核心算法生成抽奖大转盘抽奖接口实现 抽奖核心算法 我们可以根据 单商品库存量/总商品库存量 得到每个商品被抽中的概率&#xff0c;可以想象这样一条 0-1 的数轴&#xff0c;数轴上的每一段相当于一种商品&#xff0c;概率之和为1。 抽奖时&#xff0c;我们会生…...

10.第二阶段x64游戏实战-添加计时器

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;9.第二阶段x64游戏实战-创建项目代码获取人物属性 效果图&#xff1a; 当前游戏…...

fbx/obj/glb/gltf/b3dm等通用格式批量转换成osgb

fbx/obj/glb/gltf/b3dm等通用格式批量转换成osgb fbx/obj/glb/gltf/b3dm等通用格式批量转换成osgb...

打造AI应用基础设施:Milvus向量数据库部署与运维

目录 打造AI应用基础设施&#xff1a;Milvus向量数据库部署与运维1. Milvus介绍1.1 什么是向量数据库&#xff1f;1.2 Milvus主要特点 2. Milvus部署方案对比2.1 Milvus Lite2.2 Milvus Standalone2.3 Milvus Distributed2.4 部署方案对比表 3. Milvus部署操作命令实战3.1 Milv…...

使用WindSurf生成贪吃蛇小游戏:从零开始的开发之旅

在当今数字化时代&#xff0c;编程已经成为一项必备技能&#xff0c;而创建游戏无疑是学习编程过程中最具趣味性的项目之一。今天&#xff0c;我将向大家介绍如何使用WindSurf这款强大的代码生成工具来快速生成一个经典的贪吃蛇小游戏。从下载软件到运行游戏&#xff0c;我们将…...

论文学习:《EVlncRNA-net:一种双通道深度学习方法,用于对实验验证的lncRNA进行准确预测》

原文标题&#xff1a;EVlncRNA-net: A dual-channel deep learning approach for accurate prediction of experimentally validated lncRNAs 原文链接&#xff1a;https://www.sciencedirect.com/science/article/pii/S0141813025020896 长链非编码RNA( long non-coding RNAs&…...

LLM Post-Training

1. LLM的后训练分类 Fine-tuning Reinforcement Learning Test-time Scaling 方法 优点 缺点 Fine-tuning 任务适应性&#xff1a;能够针对特定任务或领域进行优化&#xff0c;提升模型在该任务上的性能。 数据驱动优化&#xff1a;利用标注数据直接调整模型参数&#x…...

【LLM】解锁Agent协作:深入了解谷歌 A2A 协议与 Python 实现

人工智能&#xff08;AI&#xff09;智能体正迅速成为企业提高生产力、自动化工作流程和增强运营能力的关键工具。从处理日常重复性任务到协助复杂的决策&#xff0c;智能体的潜力巨大。然而&#xff0c;当这些智能体来自不同的供应商、使用不同的框架或被限制在孤立的数据系统…...

FileWriter 详细解析与记忆方法

FileWriter 详细解析与记忆方法 一、FileWriter 核心概念 FileWriter 是 Java 中用于向文件写入字符数据的类&#xff0c;继承自 OutputStreamWriter&#xff0c;属于字符流体系。 1. 核心特点 特性说明继承关系Writer → OutputStreamWriter → FileWriter数据单位字符&am…...

Java笔记5——面向对象(下)

目录 一、抽象类和接口 1-1、抽象类&#xff08;包含抽象方法的类&#xff09; 1-2、接口 ​编辑​编辑 二、多态 ​编辑 1. 自动类型转换&#xff08;向上转型&#xff09; 示例&#xff1a; 注意&#xff1a; 2. 强制类型转换&#xff08;向下转型&#xff09; 示…...

c++------模板进阶

目录 一、模板 1.1 非类型模板参数 二、模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 全特化 偏特化 &#xff08;1&#xff09;部分特化 &#xff08;2&#xff09;参数更进一步的限制 三、模板分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决…...

《轨道力学讲义》——第四讲:轨道计算与预测

第四讲&#xff1a;轨道计算与预测 引言 在轨道力学的研究中&#xff0c;轨道计算与预测是将理论付诸实践的关键环节。当我们掌握了轨道运动的基本规律和数学描述后&#xff0c;下一步便是要能够准确地计算航天器在任意时刻的位置和速度&#xff0c;并对其未来的运动轨迹进行…...

鸿蒙开发-页面跳转

1.路由使用 //1.引入路由 import router from ohos.router//2.使用跳转router.pushUrl({url: "pages/Show"})2.页面跳转 import { router } from kit.ArkUI;Entry Component struct LoginPage {State message: string 登陆页;build() {Row() {Column() {Text(this…...

数据大屏只能撑撑场面?

很多人对数据大屏的看法就是“没有用”、“花架子”&#xff0c;实际上&#xff0c;它的作用绝不止于此。 业财猫全新升级的经营驾舱模块&#xff0c;以精准的行业洞察与场景化设计&#xff0c;重新定义了这一工具的价值。 作为专为财税代账行业打造的一站式运营管理平台&…...

第十九讲 | XGBoost 与集成学习:精准高效的地学建模新范式

&#x1f7e8; 一、为什么要学习集成学习&#xff1f; 集成学习&#xff08;Ensemble Learning&#xff09; 是一种将多个弱学习器&#xff08;如决策树&#xff09;组合成一个强学习器的策略。它在地理学、生态学、遥感分类等领域表现尤为突出。 &#x1f4cc; 应用优势&#…...

大数据面试问答-批处理性能优化

1. 数据存储角度 1.1 存储优化 列式存储格式&#xff1a;使用Parquet/ORC代替CSV/JSON&#xff0c;减少I/O并提升压缩率。 df.write.parquet("hdfs://path/output.parquet")列式存储减少I/O的核心机制&#xff1a; 列裁剪&#xff08;Column Pruning&#xff09; …...

关于 软件开发模型 的分类、核心特点及详细对比分析,涵盖传统模型、迭代模型、敏捷模型等主流类型

以下是关于 软件开发模型 的分类、核心特点及详细对比分析&#xff0c;涵盖传统模型、迭代模型、敏捷模型等主流类型&#xff1a; 一、软件开发模型分类及核心特点 1. 瀑布模型&#xff08;Waterfall Model&#xff09; 核心特点&#xff1a; 线性阶段划分&#xff1a;需求分…...

【STL】set

在 C C C S T L STL STL 标准库中&#xff0c; s e t set set 是一个关联式容器&#xff0c;表示一个集合&#xff0c;用于存储唯一元素的容器。 s e t set set 中的元素会自动按照一定的顺序排序&#xff08;默认情况下是升序&#xff09;。这意味着在 s e t set set 中不能…...

信奥还能考吗?未来三年科技特长生政策变化

近年来&#xff0c;科技特长生已成为名校录取的“黄金敲门砖”。 从CSP-J/S到NOI&#xff0c;编程竞赛成绩直接关联升学优势。 未来三年&#xff0c;政策将如何调整&#xff1f;家长该如何提前布局&#xff1f; 一、科技特长生政策趋势&#xff1a;2025-2027关键变化 1. 竞…...

几何建模基础-拓扑命名实现及优化

1.背景介绍 1.1 什么是拓扑&#xff1f; 拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。 Body对象的拓扑可以理解为面&#xff08;Face&#xff09;与边&#xff08;Edge&#xff09;、边…...

浙江大学DeepSeek系列专题线上公开课第二季第五期即将上线!deepseek音乐创作最强玩法来了!

浙江大学DeepSeek系列专题线上公开课第二季第5期即将在今晚进行直播&#xff01; 其中&#xff0c;今晚8点10分左右&#xff0c;浙大AI大佬张克俊教授将带来硬核的deepseek公开课讲座。 讲座 主题&#xff1a; 人工智能与音乐创作 主讲人&#xff1a; 张克俊 教授 人工智能作…...

electron-builder参数详解

electron-builder 是一个用于打包和构建 Electron 应用的工具&#xff0c;支持 macOS、Windows 和 Linux 平台&#xff0c;并提供了丰富的参数配置选项。 1、安装&#xff1a; npm install electron-builder --save-dev2、参数详解 命令&#xff1a; electron-builder build…...

PVE+CEPH+HA部署搭建测试

一、基本概念介绍 Proxmox VE ‌Proxmox Virtual Environment (Proxmox VE)‌ 是一款开源的虚拟化管理平台&#xff0c;基于 Debian Linux 开发&#xff0c;支持虚拟机和容器的混合部署。它提供基于 Web 的集中管理界面&#xff0c;简化了计算、存储和网络资源的配置与监控。P…...

Android Studio 日志系统详解

文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…...

【LLM】A2A 与 MCP:剖析 AI Agent 互联时代的两种关键协议

随着人工智能技术的飞速发展&#xff0c;AI Agent&#xff08;智能体&#xff09;正从理论走向实践&#xff0c;有望成为提升生产力的关键。然而&#xff0c;正如历史上任何新兴技术领域一样&#xff0c;标准的缺失导致了“筒仓效应”——不同来源、不同框架构建的 Agent 难以有…...

解析大尺寸液晶屏视觉检测,装配错位如何避免?

在3C电子产品种类飞速发展的今天&#xff0c;大尺寸液晶屏已成为市场主流&#xff0c;消费刚需。消费者对手机屏幕的视觉体验要求不断攀升&#xff0c;屏占比的提升成为各大手机厂商竞争的焦点。然而&#xff0c;大尺寸液晶屏在生产过程中面临着诸多检测难题&#xff0c;严重影…...