为什么要减少Unity中Outline的使用

版权声明:欢迎转载,欢迎批评,共同学习,共同进步。如果有不正确的地方,希望帮我纠正! https://blog.csdn.net/qq_33461689/article/details/86650302

百度Outline的起因是策划配置规则文字的时候配了很多文字。然后Text组件就报了这样一个错。

ArgumentException: Mesh can not have more than 65000 vertices
UnityEngine.UI.VertexHelper.FillMesh (UnityEngine.Mesh mesh) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Utility/VertexHelper.cs:88)
UnityEngine.UI.Graphic.DoMeshGeneration () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Graphic.cs:392)
UnityEngine.UI.Graphic.UpdateGeometry () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Graphic.cs:374)
UnityEngine.UI.Text.UpdateGeometry () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Text.cs:378)
UnityEngine.UI.Graphic.Rebuild (CanvasUpdate update) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Graphic.cs:335)
UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/CanvasUpdateRegistry.cs:149)
UnityEngine.Canvas:SendWillRenderCanvases()

大意就是:网格不能有超过65000个顶点。

问了一下主程,他说把Outline组件去掉。然后就百度了一下Outline的原理。看了一下这个博客:

UGUI之Outline轮廓组件

看了博客里面对Outline和Shadow的解释,

大概明白了点:

Text组件中,显示一个文字用2个triangles,4个vertices。但是加上Outline组件之后,triangles和vertices都会成倍的增加。

在Shadow组件中,会调用ApplyShadowZeroAlloc复制一份文字的顶点信息。然后移动位置,达到阴影的效果。

而在Outline组件中,也会像Shadow一样调用ApplyShadowZeroAlloc,但是不止复制一份顶点信息,而是复制5份,然后移动位置达到描边的效果。所以如果文字太多的话,就会出现上边那个报错。

猜你喜欢

转载自blog.csdn.net/qq_33461689/article/details/86650302