自学内容网 自学内容网

【解决】Unity Profiler | Sempaphore.WaitForSignal

开发平台:Unity 2022 版本以上
开发语言:CSharp 6.0
编程平台:Visual Studio 2022
关键词:Sempaphore.WaitForSignal

问题背景


  • 开发过程中出现 Waiting to excute code… 长时间阻碍运行。
  • 使用 逐对象排查法 确认影响无法运行的游戏对象的大概位置。
  • 使用 运行再激活 方式强制运行游戏对象。
  • 使用 Profile 性能分析器查看当前运行状况,发现 CPU Usage/Others 持续高额度占用。
  • 根据 Hierarchy 分栏确认 Sempaphore.WaitForSignal 的持续运行时间较长(Self ms)且调度次数高频(Calls)。
    在这里插入图片描述

关于 Sempaphore.WaitForSignal


官方文档解释

  • 包含描述线程上的同步点的示例。若要查找它正在等待的线程,请检查“时间轴”视图中是否有在此线程之前不久结束的示例。

开发者解释

  • 这只是意味着主线程处于休眠状态,等待来自另一个线程的信号。它实际上并没有消耗 CPU 时间。渲染线程正在工作,我猜在某个时候,这个渲染线程在完成时会向主线程发出信号。

解决方法


  • 使用 Timeline 分栏查看 Sempaphore.WaitForSignal 时间轴开端前的信息。

笔者问题:确认到来自本地程序 GameCoroutine.Delay 的问题。排查是否有逻辑错误导致调用的脚本方法。
其他问题应根据实际 Profile 反馈实际问题进行处理。


原文地址:https://blog.csdn.net/qq_51026638/article/details/136851210

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!