选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧
1\ 如何批量删除Unity Missing 组件
Unity2019中似乎准备了专用的方法
GameObjectUtility.RemoveMonoBehavioursWithMissingScript
Unity2018支持的方法
2、 [Unity]提示:在Inspector 中显示HDR模式渐变。
HDRgradient.cs
[GradientUsage(true)] public Gradient color;
只需写一个名为GradientUsage的属性。
3、对 Unity 2017.3中引入的“RGB Crunched ETC”和“RGBA Crunched ETC2”的验证
Updated Crunch texture compression library – Unity Blog
https://blogs.unity3d.com/jp/2017/11/15/updated-crunch-texture-compression-library/
Crunch compression of ETC textures – Unity Blog
https://blogs.unity3d.com/jp/2017/12/15/crunch-compression-of-etc-textures/
这似乎可以在iOS上使用,但iOS有PVRTC的图像,Android有ETC,所以我试图验证这些格式是否在iOS环境中是有用的。
验证方法
使用Unity版2017.3.0f3。
准备了三种类型的512x512 / 1024x1024 / 2048x2048纹理,并使用非透明(RGB)和透明(RGBA)纹理进行验证。带有image〜的纹理名称 没有透明度, 而imageTrans~具有透明度。
在MemoryProfiler (https://bitbucket.org/Unity-Technologies/memoryprofiler)上检查实际机器上的内存消耗。
使用Mac终端上的 ls -alh 命令检查“PNG文件”的大小。
括号中的文件大小是Build Report确认的值。
单击此处查看用于验证的项目 https://github.com/nakamura001/Unity-TestCrunch。
iOS版
*原始尺寸图像可以显示在上一页上。
在iOS环境中,由于图形API(Metal / OpenGL ES 3 / OpenGL ES 2)而出现差异。
由于Metal不支持ETC(支持ETC2),因此在Metal环境中执行“RGB Crunched ETC”时,实际上会消耗RGBA 32位大小的内存。即使纹理略微增加文件大小但没有透明度,使用“RGBA Crunched ETC2”也可以减少内存使用量。
由于OpenGL ES 2环境不支持ETC / ETC2,因此在执行期间使用“RGB Crunched ETC”或“RGBA Crunched ETC2”会消耗RGBA 32位大小的内存。
在PVRTC中,由于图形API的差异,尺寸没有差异。
除了存储容量最重要的游戏之外,PVRTC基本上是平衡和推荐的。
Android的
在Android环境中似乎没有问题,因此如果图形质量没有问题,您可以主动使用它。
4、计算机语言的保留字数量(英文)
5、UGUI 为什么要动静分离?
记得好像 以前发过这个截图:
6、[Unity]使用字符串插值时,添加ToString时GC Alloc减少
using UnityEngine;
using UnityEngine.Profiling;
public class Example : MonoBehaviour
{
private void Update()
{
int num1 = 1;
int num2 = 2;
// 有ToString
var sampler1 = CustomSampler.Create( " 有ToString" );
sampler1.Begin();
var str1 = $"{num1.ToString()} / {num1.ToString()}";
sampler1.End();
// 没有ToString
var sampler2 = CustomSampler.Create( "没有 ToString " );
sampler2.Begin();
var str2 = $"{num1} / {num2}";
sampler2.End();
}
}
7、[Unity]使用EditorUtility.RevealInFinder打开文件夹时,打开的是父级路径。
[MenuItem( "Tools/Hoge" )]
private static void Hoge()
{
EditorUtility.RevealInFinder( "Assets" );
}
当我尝试使用System.Diagnostics.Process.Start打开Assets文件夹时
[MenuItem( "Tools/Hoge" )]
private static void Hoge()
{
Process.Start( "Assets" );
}
8、[C#]如何通过反射获取特定类的所有子类
System.Reflection.Assembly.GetAssembly(typeof(Example))
.GetTypes()
.Where(x => x.IsSubclassOf(typeof(Example)) && !x.IsAbstract)
.ToArray();
子类的实例的
顺便说一下,使用Activator 实例化如上所述获得的子类。
var instance = System.Activator.CreateInstance(subClassType) as Example;