【发布时间】:2017-06-19 14:54:55
【问题描述】:
【问题讨论】:
【问题讨论】:
抱歉,这就是 9 切片缩放的工作原理。您需要 25 切片缩放来完成您正在寻找的事情,这对大多数事情来说都是多余的,所以我从未见过实现。
将您的精灵分成两部分:9 片部分和“缺口”部分。然后只需将槽口放置在正确的位置即可。
我没有使用过 nGUI(只有 iGUI 和 Unity 原生的——旧的和新的),所以我不确定 nGUI 如何让你做到这一点,但你仍然需要两个精灵,其中一个是缩放的,另一个不是,手动定位或通过父子相对关系定位。如果您的对话框始终具有相同的宽度,那么它将非常简单。如果没有,它可能更具挑战性。
其他一些事情:
您可能希望缺口精灵和气泡精灵具有相同的原生图像大小,但这不是必需的(可能会让事情变得更容易,也可能不会)。
缺口会希望有一些“过度出血”,这样当两个堆栈时,底层渲染代码不会全都眯着眼睛,“这里有一个间隙......”并在某些情况下绘制出来。
根据气泡部分的绘制边缘,您可能希望缺口在 前面 或 在后面。 在您的确切情况下,我认为它不会做出改变。由于颜色的原因,这有点难以分辨,但是当我执行a selectable tab(类似地构建)时,选项卡位于容器窗口的顶部,因此阴影边缘流动得很好。然后,未选择的版本没有过度出血,因此它看起来像是位于“后面”(精确的像素放置--固定大小的 2D 游戏--确保不呈现“间隙”)。
【讨论】:
为 UI 图像实现这一点有点乏味但非常简单。我最近这样做是为了使切片拉伸 9 切片的左/右边界而不是中心。
诀窍是继承 Image 并覆盖 OnPopulateMesh,您可以在其中进行所需的计算并将位置/uvs 设置为您需要的任何值。
这是一篇有用的操作方法文章:https://www.hallgrimgames.com/blog/2018/11/25/custom-unity-ui-meshes
非 UI 精灵的事情会更难。我认为您必须在脚本中创建所有几何图形,并且计算可能有点复杂,因为您使用的是地图集。
【讨论】: