选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧
csdn 的东西, 不想吐槽, 笔记的拷贝 还需要重新传图片, 代码排版等问题, 垃圾~
1、 看到 “Unity Asynchronous完全理解学习小组” 视频的笔记
参考视频和文章
- 工作线程 - YouTube
- 使用UniTask(UniRx.Async)在Unity中进行Deep Dive async / await - YouTube
- 利用Observable进行异步处理 - YouTube
- async / await如何工作 - YouTube
- 关于内存节省和加速协议的新cc - Unity,或其在UniRx 5.3.0中的反映
异步处理的基础知识
特点
- 处理不会立即返回结果
- 您无需等待功能完成即可执行以下操作
- 异步处理不一定是多线程的
- 协同程序是单线程和异步的
- 有并发执行和并行执行,同时CPU共享,每个CPU实现并行
- 处理结束时发出消息
- 收到邮件的收件人会做一些事情
- 发出一条OnNext或Error消息
问题点
- 处理执行结果
- 串行/并行处理
- 错误处理
- 取消执行
- 控制执行上下文(多线程控制)
- 写愚蠢是无法控制的
错误处理
- 将其发布在日志上并完成
- 要重试
- 回到另一个过程
- 放弃处理
- 抓住失败
2、 [Unity]我在iOS中将架构从Universal更改为ARM 64,并检查了可以减少多少Xcode构建时间
Architecture |
构建時間 |
任务数 |
Universal |
240 秒 |
291 |
ARM64 |
140 秒 |
161 |
*任务数量是Xcode顶部显示的数字
【Unity】我尝试通过减少Android上的Target Architectures来缩短构建时间
- Unity版本:2018.3.7f1
- 脚本编写后端:IL2CPP
- 构建系统:Gradle
- 使用空Unity项目进行验证
Architecture |
构建時間 |
ARMv7 + x86 |
55 秒 |
只有 ARMv7 |
71 秒 |
[Unity]我试着看看通过减少Android上的Target Architectures可以减少多少应用程序容量
- Unity版本:2018.3.7f1
- 脚本编写后端:IL2CPP
- 构建系统:Gradle
- 使用空Unity项目进行验证
Architecture |
容量 |
ARMv7 + x86 |
12.7 MB |
只有 ARMv7 |
6.63 MB |
3、 [Unity] “SpriteAtlasUtility.PackAllAtlases” 可以打包指定的SpriteAtlas
using UnityEditor; using UnityEditor.U2D; using UnityEngine.U2D; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var path = "【SpriteAtlas的路径】"; var atlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( path ); var atlases = new []{ atlas }; SpriteAtlasUtility.PackAtlases( atlases, BuildTarget.Android ); } }
[Unity]“SpriteAtlasUtility.PackAllAtlases”可以打包Unity项目中的所有SpriteAtlas
using UnityEditor; using UnityEditor.U2D; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { SpriteAtlasUtility.PackAllAtlases( BuildTarget.Android ); } }
4、 [Unity] Unity 2018.1 新功能在 iOS / Android 上使用 “GUIUtility.systemCopyBuffer”,可以将字符串复制到剪贴板
using UnityEngine; public class Example : MonoBehaviour { private void Awake() { GUIUtility.systemCopyBuffer = "皮卡丘"; } }
5、[Unity] Unity 2018.3新功能“Application.consoleLogPath”可以获取控制台日志的输出目标路径
using UnityEngine; public class Test : MonoBehaviour { private void Awake() {; Debug.Log( Application.consoleLogPath ); } }
平台 |
文字列 |
Windows编辑器 |
C:/Users/【用户名称】/AppData/Local/Unity/Editor/Editor.log |
Android的 |
【空字符串】 |
iOS版 |
【 |