答案 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的东西会更难。我认为您必须在脚本中创建所有几何图形,并且由于使用的是图集,因此计算可能会有些复杂。