如何在保持中心不缩放的同时9切片精灵?

时间:2017-06-19 14:54:56

标签: unity3d ngui

我想知道有没有办法切割这个精灵(对话框弹出的东西)可以保持底部中心(颠倒的三角形)没有缩放?如果重要的话,我正在使用nGUI。

Image inspector properties

2 个答案:

答案 0 :(得分:4)

都能跟得上

很抱歉,但这就是9切片缩放的工作原理。你需要25个切片缩放来做你正在寻找的东西,这对于大多数事情来说都是过度的,所以我从来没有见过实现。

该怎么做......

将你的精灵分成两部分:9片部分和#34;缺口"一部分。然后将凹口定位在正确的位置。

我还没有使用过nGUI(只有iGUI和Unity本机 - 无论是新旧还是新的)所以我不确定nGUI如何让你这样做的确切性质,但是你&#39 ; d仍然需要两个精灵,其中一个是缩放的,另一个不是精灵,可以手动或通过亲子相对关系定位。如果您的对话框始终具有相同的宽度,那么它将非常简单。如果没有,可能会更具挑战性。

其他一些事情:

  • 您可能希望将缺口精灵和气泡精灵设置为相同的原始图像大小,但它不是必需的(可能会使事情变得更容易,也可能不会)。

  • 缺口会想要一些" overbleed"因此,当两个堆叠时,底层的渲染代码并没有全都眯着眼睛看去,这里有一个差距......"并在某些情况下通过。

  • 根据气泡部分的绘制边缘,您可能希望凹槽位于前面后面。在您的精确情况下,我不要以为它会有所作为。由于颜色的原因,它有点难以分辨,但是当我做a selectable tab(类似地构建)时,标签位于容器窗口的顶部,以便阴影边缘流畅地流动。然后,未选择的版本没有过度使用,所以看起来它位于"背后" (准确的像素放置 - 固定大小的2D游戏 - 确保没有"间隙"呈现)。

答案 1 :(得分:0)

为UI图像实现此操作有点乏味但非常简单。我最近这样做是为了使切片拉伸9切片的左/右边界而不是中心。

诀窍是将Image子类化并覆盖OnPopulateMesh,在该处您可以进行所需的计算,并将position / uvs设置为所需的值。

这是一篇很有帮助的操作方法文章:https://www.hallgrimgames.com/blog/2018/11/25/custom-unity-ui-meshes

用于非UI Sprite的东西会更难。我认为您必须在脚本中创建所有几何图形,并且由于使用的是图集,因此计算可能会有些复杂。