当前位置:   article > 正文

Unity3d 周分享(23期 2019.11.10 )_metal 不支持 rgba8_etc2

metal 不支持 rgba8_etc2

选自过去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减少

  1. using UnityEngine;
  2. using UnityEngine.Profiling;
  3. public class Example : MonoBehaviour
  4. {
  5.     private void Update()
  6.     {
  7.         int num1 = 1;
  8.         int num2 = 2;
  9.         // 有ToString
  10.         var sampler1 = CustomSampler.Create( " 有ToString" );
  11.         sampler1.Begin();
  12.         var str1 = $"{num1.ToString()} / {num1.ToString()}";
  13.         sampler1.End();
  14.         
  15.         // 没有ToString
  16.         var sampler2 = CustomSampler.Create( "没有 ToString " );
  17.         sampler2.Begin();
  18.         var str2 = $"{num1} / {num2}";
  19.         sampler2.End();
  20.     }
  21. }

 

 

 

 

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

    }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/247993
推荐阅读
相关标签
  

闽ICP备14008679号