- 博客(4)
- 收藏
- 关注
原创 [Unity] UGUI 性能优化简述
合批就是将多个DrawCall合并为同一个DrawCall并放入命令缓冲区中,每当CPU调用DrawCall时需要从用户模式切换到内核模式,并且需要调用DX\GL的驱动接口,该操作耗时较长,我们可以通过合批来解决这个问题,自Unity5.2以后,对于UGUI的合批底层C++代码改为多线程操作,当前移动端CPU基本都是多核,各个Driver接口优化也越来越好,所以也有些人说UI动静分离对性能提升已经没有那么明显。
2023-08-07 07:25:29
255
原创 [Unity]关于Unity读取Excel动态生成脚本与二进制文件(附源码)
我一开始使用了OleDb的方式来读取Excel,结果报了NotImplementedException: OleDb is not implemented这个异常,网上关于这方面的消息也很少,后来在stackoverflow上才找到相关信息,Mono并不支持OleDb.所以后来还是使用Excel.dll来读取,这里我发现如果是.xls文件,只使用Excel.dll就可以了,如果是.xlsx就另需ICSharpCode.SharpZipLib.dll这个库两个库的网盘链接: https://pan.b
2021-02-28 17:55:29
1287
5
原创 [C#]关于处理任务中未处理的异常与AggregateException
处理任务中的异常很简单,只需要将任务的委托主体包裹到try/catch块中,但未处理的异常就麻烦了。为了处理出错的任务,一个技术是显式创建延续任务作为那个任务的"错误处理程序",如下图:检测到先驱任务引发未处理的异常,任务调度器会自动调度延续任务,但是如果没有这种处理程序,同时在出错的任务上执行Wait()或其他试图获取Result的动作,就会引发一个AggregateException。一般线程中引发未处理异常,会造成引用程序异常中止,但在任务中有所不同,在这种情况下,任务调度器会用一个"ca
2020-12-06 04:53:18
2467
原创 [C#]关于变量读写的原子性
假如读写变量的类型大小不超过一个本机(指针大小)整数,CLR就能保证该类型不会被部分性地读取或写入。所以,64位操作系统保证能够原子性的读写一个long(64位)。然而128位变量(decimal)的读写就不保证是原子性的。因此,通过写操作更改一个decimal变量时,可能会在仅仅复制了32位之后被打断,造成以后读取一个不正确的值,这称为一次被撕裂的读取。即在64位操作系统下,对64位以下包括64位大小的变量进行读写操作时,是原子性的,32位同理。...
2020-12-06 04:21:12
1370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人