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

Unity项目优化案例二

本文地址:https://blog.csdn.net/t163361/article/details/135024136

针对工作中遇到的优化问题,记录一下,给大家优化自己的项目提供一些思路。
公司产品最近正给国内某大型赛事做支撑服务暴露出不少问题。

使用环境

Unity 2021.3.0f1
cpu i7 10750H
显卡 T1000 4G
内存 16G

问题分析解决

程序集成了EasyDecal插件。最近被大量使用,暴露出不少问题。
1.当创建多个EasyDecal对象时,最后一个会无法加载
2.在某些模型上添加特别慢 2000ms以上 记录一下,下次更新
3.修改大小时,会特别慢 2000ms以上 记录一下,下次更新

优化思路

问题一

  1. 先确认问题
    开发电脑无法触发问题,测试电脑才会触发。
  2. 多次尝试(2天)后,终于找到比较容易触发的方法
  3. 通过观察发现问题出现概率和性能有关,速度越慢的电脑越容易触发
  4. 同时,功能加载的部分用的是Task,其中用到了CancellationTokenSource这个类,下面是部分调用代码
	  tokenSource = new CancellationTokenSource();var  tasktoken = tokenSource.Token;var task = Task.Run(() =>{if(tasktoken.IsCancellationRequested)return;this.meshCutter.CutMesh(this.dynamicMesh);},tasktoken);task.GetAwaiter().OnCompleted(() =>{this.Parent.AddDynamicMesh(this.dynamicMesh, false);task.Dispose();tokenSource?.Cancel();});

5.通过加log,发现下面两个处理函数调用次数不匹配

this.meshCutter.CutMesh(this.dynamicMesh);
this.Parent.AddDynamicMesh(this.dynamicMesh, false);

AddDynamicMesh对应的CutMesh没有调用,这样方向就有了。
6.仔细看代码,偶然发现tokenSource是这么定义的

static CancellationTokenSource tokenSource = new CancellationTokenSource();

7.好嘛,全局通用,那肯定当性能比较卡,多次触发加载的时候会导致

tokenSource?.Cancel();

这句代码把最后一次加载给强制关闭掉。当然如果卡的厉害应该会出现多次加载被强制关闭的情况。
8.解决就比较简单了,把定义里面的static给删掉就好了

最终效果

问题解决。这个问题主要的时间花费在问题重现上了。当能有很容易的触发方式后,通过加log的方式,很快就确认问题了。

相关文章:

Unity项目优化案例二

本文地址:https://blog.csdn.net/t163361/article/details/135024136 针对工作中遇到的优化问题,记录一下,给大家优化自己的项目提供一些思路。 公司产品最近正给国内某大型赛事做支撑服务暴露出不少问题。 使用环境 Unity 2021.3.0f1 cpu…...

如何发布自定义 npm 组件包

准备工作 1. 注册 npm 账号 还没有 npm 账号?去官网注册: https://www.npmjs.com 需要记住用户名、密码、邮箱,后面需要用到。 2. 查看本地 npm 镜像,如果不是默认的,需要改回来 npm config get registry重置镜像路…...

iOS_给View的部分区域截图 snapshot for view

文章目录 1.将整个view截图返回image:2.截取view的部分区域,返回image:3.旧方法:4.Tips参考: 1.将整个view截图返回image: 这些 api 已被废弃,所以需要判断 iOS 版本 写两套代码: R…...

计算机网络——数据链路层-可靠传输的实现机制:回退N帧协议GBN(无差错情况、累积确认、有差错情况、发送窗口尺寸)

目录 回退N帧协议GBN 介绍 无差错情况 累积确认 有差错情况 发送窗口尺寸 小结 练习 解析 示意图 上篇中所介绍的停止-等待协议的信道利用率很低;若出现超时重传,则信道利用率更低。 如果发送方在收到接收方的确认分组之前可以连续发送多个数…...

IDEA debug窗口左边工具栏隐藏与显示

今天在debug排查代码的时候一不小心点到哪里,结果变成这样 我们可以这样恢复,右键Debug 点击show Toolbar...

WPF 基于TableControl的页面切换

文章目录 前言其它项目的UserControl切换TableControl添加按钮,隐去TableItem的Header 结论 前言 我想用WPF简单实现一个按钮视图切换的效果,但是我发现别人的实现效果非常的麻烦。 其它项目的UserControl切换 我网上找了个开源的项目,他是…...

Lua 元表,元方法

元表与元方法的概念 Lua中每个值都可具有元表。元表是普通的Lua表,定义了原始值在某些特定操作下 的行为。 例如,当table作为加法的操作数时,Lua检查其“元表”中的“__add”字段是否有 个函数。如果有,Lua调用它执行加法。我们称“元表”中的“键(如__add)”为事件(event),称…...

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个…...

Knife4j 接口文档如何设置 Authorization 鉴权参数?

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…...

CentOS 防火墙管理及使用的redis基本常用命令

文章目录 防火墙管理使用systemctl管理防火墙启动、关闭使用firewalld-cmd配置访问防火墙策略firewalld配置文件修改限制来源IP docker使用 redis 防火墙管理 需要关闭防火墙或者开启对应端口 使用systemctl管理防火墙启动、关闭 启动防火墙: systemctl start fi…...

路由器原理

目录 一.路由器 1.路由器的转发原理 2.路由器的工作原理 二.路由表 1.路由表的形成 2.路由表表头含义 直连: 非直连: 静态 静态路由的配置 负载均衡(浮动路由) 默认路由 动态 三.交换与路由对比 一.路由器 1.路由器…...

采埃孚4D成像雷达拆解

1 基本信息 品牌:海外Tier1采埃孚 • 应用:上汽飞凡中高端纯电平台 • 数量:单车2个,安装在前后保内部 • 最远探测距离:350米 拆解来看,4D雷达主要可以分为4个部分,分别为数字接口板及结构件…...

若依框架springboot——修改前端图片上传样式

简述 使用过若依框架的,一定知道若依前端框架上传图片的样式,是一个正方形加号图片,但是如果你要使用自定义样式呢。 比如将下面这个图进行修改呢 修改后的样式 你可以直接找到element-ui 修改上传图片的组件,也可以加入新的组…...

mysql 数据库 关于库的基本操作

库的操作 如果想到 mysql 客户端当中数据 系统当中的命令的话,直接输入的话,会被认为是 mysql 当中的命令。 所以,在mysql 当中执行系统当中的命令的话,要在系统命令之前带上 ststem ,表示系统命令: 但是…...

【通用】Linux,VSCode,IDEA,Eclipse等资源相对位置

正文 不论是 IDEA、Linux、VSCode、cmd等等吧,都遵循这个规则: 如果以斜杠开头,表示从根开始找: IDEA的根是classpath(classpath就是项目被编译后,位于 target下的 classes文件夹,或者位于ta…...

音视频技术开发周刊 | 323

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 Meta牵头组建开源「AI复仇者联盟」,AMD等盟友800亿美元力战OpenAI英伟达 超过50家科技大厂名校和机构,共同成立了全新的人工智能联盟。以开源为旗号…...

STM32在CTF中的应用和快速解题

题目给的是bin文件,基本上就是需要我们手动修复的固件逆向。 如果给的是hex文件,我们可能需要使用MKD进行动态调试 主要还是以做题为目的 详细的可以去看文档:https://pdf1.alldatasheet.com/datasheet-pdf/view/201596/STMICROELECTRONIC…...

SaaS 电商设计 (五) 私有化部署-实现 binlog 中间件适配

一、 背景 具体的中间件私有化背景在上文 SaaS 电商设计 (二) 私有化部署-缓存中间件适配 已有做相关介绍.这里具体讨论的场景是通过解析mysql binlog 来实现mysql到其他数据源的同步.具体比如:在电商的解决方案业务流中经常有 ES 的使用场景,用以解决一些复杂的查询和搜索商品…...

Android APP 常见概念与 adb 命令

adb 的概念 adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server,会接收 adb 的命令然后帮助管理,控制,查看设备的状态、信息等,是开发、测试 Android 相关程序的最常用手段。…...

菜鸟学习日记(python)——函数

函数是组织好的,用来实现某些功能的代码块,它可以重复使用。 函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定义函数。 定义函数 用…...

解锁HexView自动化:Bat脚本驱动S19/HEX文件处理实战

1. 为什么需要自动化处理S19/HEX文件 在汽车电子开发领域,我们经常需要处理各种固件文件,比如S19、HEX等格式。这些文件包含了嵌入式系统的机器代码,是软件最终要烧录到芯片中的形态。每次软件更新时,开发人员都要对这些文件进行一…...

技术深度解析:5大核心要点掌握Sunshine开源游戏串流服务器实战部署

技术深度解析:5大核心要点掌握Sunshine开源游戏串流服务器实战部署 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的自托管开源游戏串流服务器…...

PS图片文字修改教程 简单几步完美替换文字内容

日常设计、办公、自媒体创作中,我们经常会遇到需要修改图片文字的场景:海报文案调整、截图信息替换、照片文字修正等。很多人苦于改完文字后模糊留痕、背景破损,要么耗时半天还达不到理想效果。今天就给大家分享两种PS改图片文字的实用方法&a…...

长期使用Taotoken Token Plan套餐在项目开发中的成本控制体会

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐在项目开发中的成本控制体会 在中长期AI项目的开发实践中,成本的可预测性与可控性是团…...

如何高效清理重复图片?AntiDupl.NET智能去重工具详解

如何高效清理重复图片?AntiDupl.NET智能去重工具详解 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在数字资产管理中,重复文件清理已成为提升…...

pip cache purge 清理下载缓存文件

如上图所示的这个目录是 Python 的包管理工具 pip 用来存储下载过的安装包(wheel 或源码包)的缓存。它的主要作用是在你下次安装同一个包时,可以直接从本地读取,而无需再次从网络下载,从而加快安装速度。 但是&#xf…...

揭秘半导体IP授权:从PowerVR客户名单看移动芯片生态博弈

1. 项目概述:一场关于半导体IP版图的“侦探游戏”如果你在2012年前后关注过移动芯片和图形处理领域,那你一定对Imagination Technologies这家公司不陌生。当时,智能手机和平板电脑的浪潮正席卷全球,而决定这些设备图形显示能力的心…...

3分钟搞定Axure RP中文界面:全版本汉化终极指南

3分钟搞定Axure RP中文界面:全版本汉化终极指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文…...

企业AI成本为什么总是失控?Token计量与费用归因体系设计

一、问题背景随着企业大规模接入大模型能力,一个普遍现象正在浮现:AI成本正在失控。月初预算批了10万,月底账单来了20万。问财务:钱花哪了?财务说:只知道总额,不知道细节。问IT:哪个…...

ClawSpark:一键部署私有AI智能体,实现本地化智能助手

1. 项目概述:ClawSpark,一键部署的私有AI智能体如果你和我一样,对AI智能体(Agent)的潜力感到兴奋,但又对将个人数据、工作流程乃至核心业务逻辑完全托付给云端API心存疑虑,那么ClawSpark的出现&…...