Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unity3d 周分享(23期 2019.11.10 )

这篇博客汇总了Unity3d的实用技巧,包括批量删除Missing组件的方法,Unity中HDR模式渐变的实现,验证Unity 2017.3引入的纹理压缩格式对iOS和Android的影响。还涵盖了反射获取子类、Unity字符串插值减少GC Alloc、使用EditorUtility.RevealInFinder的注意事项等Unity开发中的实用知识。
摘要由CSDN通过智能技术生成

选自过去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、计算机语言的保留字数量(英文)

image.png

 

 

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" );

    }

image.png

当我尝试使用System.Diagnostics.Process.Start打开Assets文件夹时

[MenuItem( "Tools/Hoge" )]

    private static void Hoge()

    {

        Process.Start( "Assets" );

    }

image.png

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;

 

 

9

添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值