Unity C# 反射性能优化

2022-06-13
阅读 25 分钟
4.4k
1.反射性能很差,比直接调用慢成百上千倍。2.反射性能优化的思路是绕开反射。3.反射性能优化方式有:字典缓存(Dictionary Cache)、委托(Delegate.CreateDelegate)、Expression.Lamda、IL.Emit、指针(IntPtr) 等各种方式。4.性能排名:直接调用 > (IL.Emit == Expression) > 委托 > 指针 > 反射5.通用性排名...

Unity C#热更新方案 ILRuntime学习笔记(二) 代码跨域调用

2020-07-19
阅读 6 分钟
8k
一、主工程调用Hotfix代码 假设Hotfix工程里有一个Test类,该如何调用该类的方法呢? {代码...} 1.调用静态方法 {代码...} 2.调用实例方法 {代码...} 二、Hotfix调用主工程代码 Hotfix调用主工程代码直接调用即可,无需特别步骤。 {代码...} 三、Hotfix响应MonoBehaviour事件 Hotfix响应MonoBehaviour中的事件,可以用代...

Unity C#热更新方案 ILRuntime学习笔记(一) Hello World

2020-07-11
阅读 10 分钟
16.8k
问:什么是ILRuntime?答:ILRuntime是一个C#热更新方案。ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速、方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新

LiteByte教程

2019-12-18
阅读 5 分钟
2.8k
转载请标明原文地址:[链接]简介LiteByte是一种轻量级的二进制数据交换格式。体积小巧、简单易用是设计目标。主要用于解决前后台数据传输的问题。作者:冰封百度(ZhangYu)设计的灵感来源于C# struct内存对齐后的紧凑格式。Gitee:[链接]特点1.紧凑的二进制数据格式,支持变长整型,数据量小。2.用类定义对象结构,使用方便...

Unity FPS帧率计算

2019-08-23
阅读 1 分钟
6.9k
FPS帧率统计是性能测试常用组件之一,下面分享一个简单的FPS统计脚本。 1.效果图 2.代码FPSUI.cs {代码...}

Unity C# 字符串操作API效率比较

2019-07-29
阅读 7 分钟
5.1k
先说测试结论:操作char比string快。string.Equals()比==快。IndexOf()比StartWith()快很多。LastIndexOf()比EndWith()快很多。操作字符串时,逐个字符比较,效率会提高很多。

Unity Protobuf和JSON对比

2019-07-25
阅读 4 分钟
6k
在Unity中使用Protobuf两种方式:1.导入Unity专用的Protobuf-net资源包,用C#代码定义对象。2.配置.net的Protobuf环境,用原生的.proto文件定义对象。

Unity 性能优化经验整理

2019-07-23
阅读 8 分钟
17.2k
优化思路 个人优化原则: 三原则: 注意细节、注意细节、注意细节! 优化手段: 1.善于使用工具2.减少总量3.空间、时间互换4.由浅入深 1.善于使用工具:一定要善于使用工具来分析性能问题(Profiler),先找出性能瓶颈再做优化。 2.减少总量:尽量减少性能消耗的总量(内存和CPU占用)。 3.空间、时间互换:CPU和GPU可以互换...

Unity 删除Animator中无效的Animation引用

2019-07-17
阅读 4 分钟
6.6k
导出Animator时,发现Animator中关联了很多没用的Animation文件。这些无效的Animation都是以前曾经使用过的动画文件。

Unity JSON性能对比(LitJson、NewtonsoftJson、SimpleJSON)

2019-07-11
阅读 3 分钟
13.1k
Unity中Json库性能对比测试 类库大小对比: 类库 文件类型 大小 NewtonsoftJson .dll 353KB LitJson .dll 56KB SimpleJSON .cs 68KB 解析时间对比:执行次数:10000次 测试方法 NewtonsoftJson LitJson SimpleJSON 测试1 114ms 158ms 52ms 测试2 136ms 288ms 126ms 测试3 263ms 542ms 169ms 测试4 333ms 747ms 200ms 测试...

Unity 加载AssetBundle

2019-07-03
阅读 6 分钟
11k
(官方已淘汰WWW类,如果是5.x之前的老版本工程可以继续使用WWW,如果是5.x之后的工程请使用UnityWebRequest类替代)Unty4.x - 5.x 用WWW类加载WWW.LoadFromCacheOrDownload() 通过Url和版本号自动缓存资源包 注意必须是资源包 不能是其他格式 不能加密

Unity GPU Instance(大量相同网格物体合批)

2019-06-22
阅读 6 分钟
14.2k
在Unity中 同网格同材质的模型是可以合批的动态批处理和静态批处理都可以合批 但是都有其限制动态批处理有顶点数不能超过900的限制 只适合比较简单的模型静态批处理的物体不能移动、旋转、缩放 并且需要消耗额外的内存来存储合并后的物体

Unity C# for和foreach效率比较

2019-04-13
阅读 3 分钟
11k
先说测试结果:for比foreach快,for循环不额外定义length似乎更快(有网友评论说我的结论有些问题。foreach和for的效率是一样的。感谢评论,我觉得有道理,于是我在循环内加了运行代码,重新测了一下,结果没变,但是发现点新东西)

Unity C# Mathf.Abs()取绝对值性能测试

2019-04-04
阅读 2 分钟
7.2k
之前有人提到过取绝对值时 直接写三目运算符比用Mathf.Abs()效率高 没觉得能高太多今天测了一下 真是不测不知道 一测吓一跳 直接写三目运算符比Mathf.Abs()效率高数倍

Unity趟坑问题汇总

2019-03-21
阅读 3 分钟
6.6k
在使用Unity引擎开发的过程中总会遇到各种各样的问题,有些问题很坑,只有遇到的才懂,为了避免以后自己再被同一块石头绊倒,特意在此做个整理,希望能给大家节省一些时间,有同样遇到坑的小伙伴也可以把问题或解决方法写在楼下,以供其他小伙伴参考。趟过的坑会持续整理。

Unity C# 3D世界坐标转2D屏幕坐标

2019-03-20
阅读 1 分钟
8.5k
让2D UI跟随3D物体移动或指示3D物体的位置该怎么做呢? 关键代码: {代码...} 测试脚本:Position3DTo2DTest.cs {代码...} 实现效果:血条UI悬浮在人物头顶 当摄像机旋转角度时 重新定位

Unity C# Event 自定义事件系统

2019-03-05
阅读 6 分钟
12k
在Unity中 用C#实现自定义的事件系统参考自《Advanced C# Messenger》 实现一个高效的,独立的,可复用的事件系统。这种方式实现的事件,GC会很低,值类型0GC。

Unity 计算导弹抛物线弹道和转向

2019-02-28
阅读 6 分钟
13.9k
在三维空间中,利用抛物线公式计算弹道,得到一个发射初速度,让导弹打击到指定地点效果图: 测试脚本:通过Height调整导弹的飞行高度通过Gravity调整导弹的飞行速度 代码实现 关键代码: {代码...} 代码封装: {代码...} 测试代码: {代码...}

Unity C# 打包AssetBundle与场景

2019-02-27
阅读 4 分钟
11k
Unity2018已经把打包过程简化很多了我们只需要关心1个API:1.BuildPipline.BuildAssetBundles() 打包AssetBundle2.BuildPipline.BuildPlayer() 打包场景 (场景可以打包进AssetBundle里动态加载 所以不推荐用这个API了)

Unity性能优化之CPU-解决LogStringToConsole占用过高

2018-10-09
阅读 1 分钟
11.5k
在优化数年前老游戏项目的性能时发现CPU占用过高,调用性能分析器Profiler发现是脚本的问题。最后问题定位到LogStringToConsole这里了,可查看了代码,既没有Log也没有print输出任何字符,Console控制台也没有输出任何消息。这就很奇怪了,这个LogStringToConsole占用CPU过高究竟是什么导致的?百度了一下相关信息,国外...

Unity官方中文版(有生之年终于等到了)

2018-10-08
阅读 2 分钟
22.5k
安装步骤:1.下载并安装UnityHub 登录账号并激活。(似乎国内连国外网络不是很好,这一步卡了好久,反复激活了很多次才成功)Unity官网:[链接]Windows: [链接]Mac: [链接]

Unity中Android开发环境搭建配置教程

2018-07-10
阅读 4 分钟
17.3k
1.下载安装Unity安卓支持插件用Unity下载助手下载安卓支持插件UnitySetup-Android-Support-for-Editor.exe并安装。

Unity脚本生成插件:Script Create Dialog

2018-07-09
阅读 7 分钟
3.7k
最近写代码又犯懒了...感觉每次新建脚本都要写一堆简单重复的东西好无聊,所以搜索了一下有没有自动生成脚本的插件。结果还真被我发现了,官方在N久之前就制作了自动生成脚本的插件[Script Create Dialog],大概是名字起的和脚本生成器相差太多,现在的开发工具又太强大,所以被埋没了。所支持的Unity版本 3.4.2及以上,...

Unity相机截图

2018-07-06
阅读 5 分钟
4.8k
最近做项目的时候需要在游戏里截一张高清截图,研究了一下写成脚本,方便以后使用。脚本可以自定义分辨率,用相机截高清截图。可以用代码动态截图,也可以在编辑模式下截图。注意截图宽高比要正确,宽高比不正确时可能会出问题。

Unity中加载文本

2018-07-02
阅读 2 分钟
3.3k
关键代码 {代码...} Unity TextAsset支持的后缀格式: .txt .xml .json .bytes .csv .fnt .htm .html .yaml 封装 TextLoader.cs {代码...} 注意事项: 文本放在Resources下时,要注意后缀是否是Unity支持的格式。加载时不需要填写后缀名称,相同路径下的不同类型文件不要重名,否则加载时可能会选错文件。

Unity性能优化之内存-贴图格式优化

2018-06-28
阅读 3 分钟
14.3k
最近做的一个小游戏在美工提交了一批角色模型后,发现一生成角色的时候就会卡一下。分析原因后发现贴图占用内存太大,优化后做个总结。 1.分析原因 既然是生成新角色的时候卡了一下,那么问题原因就定位在生成新模型的过程上。打开性能分析器看下CPU和内存情况,发现内存出现大幅波动。 (1)未生成角色前:贴图占用内存:...

Unity全屏切换

2018-06-21
阅读 2 分钟
5.2k
关键代码: {代码...} 封装:FullScreenSetup.cs {代码...} 附送脚本皮肤: FullScreenSetupEditor.cs {代码...}

Unity计时器脚本Timer

2018-06-19
阅读 7 分钟
12.2k
Timer用法:第一种:脚本加到物体上,勾选"自动计时"。第二种:脚本加到物体上,调用timer.start()方法启动。第三种:代码中动态添加Timer脚本。

Unity场景加载进度条

2018-06-15
阅读 5 分钟
5.8k
实现思路:加载器加载场景 -> 加载进度通知UI -> 更新UI进度 1.场景加载器:SceneLoader.cs {代码...} 2.进度条:ProgressBar.cs {代码...} 3.进度更新接口:IOnProgress.cs {代码...} 附送场景加载器 编辑器:SceneLoaderEditor.cs {代码...} 附送进度条 编辑器:ProgressBarEditor.cs {代码...}

Unity中解决JsonUtility转换数组失败的BUG

2018-06-14
阅读 3 分钟
13.9k
在使用Unity官方提供的JsonUtility类进行JSON转换时,发现一旦转换数组就会出现问题。解决转换数组的问题之后整理一下代码并做个记录。