Unity wiki 百科 :http://wiki.unity3d.com/index.php/Main_Page
http://wiki.unity3d.com/index.php/Category:C_Sharp
Unity 资源提取工具:UnityStudio
Unity 时序图:https://docs.unity3d.com/Manual/ExecutionOrder.html
Unity机器学习Github地址:https://github.com/Unity-Technologies/ml-agents
Unity项目单元测试工具:https://github.com/ThrowTheSwitch/Unity
Unity实验室:https://unity.com/cn/labs
untiy 工具选择:https://code.visualstudio.com/docs/other/unity
常用插件:
unity特别说明了一下内容 StartPhotoModeAsync:在任何给定时间,只有一个PhohotCapture实列可以启动拍照模式。所以用线程安全的单例进行控制拍摄。
PrefabUtility.GetPrefabAssetType(go) == PrefabAssetType.Regular
[Header("是否显示帧率")] public bool IsShowFPS; void Update() { deltaTime += (Time.unscaledDeltaTime - deltaTime) * 0.1f; } void OnGUI() { if (IsShowFPS) { int w = Screen.width, h = Screen.height; GUIStyle style = new GUIStyle(); Rect rect = new Rect(20, 20, w, h * 2 / 100); style.alignment = TextAnchor.UpperLeft; style.fontSize = h * 2 / 80; //new Color (0.0f, 0.0f, 0.5f, 1.0f); style.normal.textColor = Color.red; float msec = deltaTime * 1000.0f; float fps = 1.0f / deltaTime; string text = string.Format("{0:0.0} ms ({1:0.} fps)", msec, fps); GUI.Label(rect, text, style); } }
后来做完这次优化,我再次感受到,出现这些泄露的原因归根结底还是代码不够规范引起的,不注重必要的初始化和释放成对调用等,大致总结起来有以下几点:
readonly
,并且引用了其他的类型,甚至项目引用,最终形成引用环,并且环的某一个节点又被全局对象引用,造成“蝌蚪的尾巴被拴住”的情况,因此连带了很多的对象无法释放。Initialize
就有 Release
,但实际情况大多是有Initialize
而没有 Release
。MonoBehaviour
对象 A
去 StartCoroutine
其他对象 B
的函数,那么这时 B
对象会被 A
对象引用,如果协程为正确执行结束在无线等待,那么 B
也会永远被 A
对象引用而不得释放,即使 StopAllCoroutine
也不行。Delegate
,这时大家经常使用的功能,但是也容易造成内存泄露,如果只是 +=
而没有在合适的地方 -=
,那么代理的方法所属的对象是会被一直引用而无法释放的。总结起来很简单,这次优化就大致发现这几条,但是都不经意间,日积月累,引起了比较严重的问题,所以不要小看代码规范,和框架的遵守。
安卓平台发布卡住在Detecting 问题,原因网络问题,解决办法:
方法1:断开无线网发布。
方法2:修改网络属性的DNS服务器地址:首选地址:114,114,114,114。然后断网重连或者重启计算机。
Editor→Preferences→External Tool→External Script Editor 选择vs安装路径。
打开PackageManager 选择Unity Registry 搜索 Visual Studio 安装Visual Studio Code Editor,Visual Studio Editor.
-batchmode -nographics
Player→Vulkan Settings →select SRGB Write Mode*