unity3d - Unity UI 图像的软阴影
问题描述
在 Unity UI 图像的轮廓周围实现软阴影的最佳方法是什么?我想达到下面的效果:
(图片来源:YouTube 视频:Soft Shadow UI || Unity 5)
我目前的做法是在主图像后面手动添加一个阴影图像。例如,请参见下面的屏幕截图:
但是,从工作流程的角度来看,我发现这种方法既乏味又混乱,因为每次我想向 UI 图像添加软阴影时,我都必须手动将此阴影游戏对象添加到我的游戏对象层次结构中。
虽然我认为可以稍微改进当前的工作流程,但有更好的方法吗?
请注意,我还尝试了 Unity 的内置阴影效果组件:
这是一个阴影,而不是我正在寻找的柔和阴影效果。
但我认为这种方法显示了一个理想的工作流程,它就像将阴影组件添加到带有 Image 的 GameObject 一样简单。
解决方案
我会将您拥有的当前阴影拆分为 3 个图像:角、边缘、背景。
然后,我会制作一个脚本,以正确的大小和方向将这些图像实例化到所有角落、边缘和您正在阴影的元素下方(对于背景)。
该脚本还将处理这些参数:
- float Intensity(实际上改变了 alpha 透明度)
- 浮动传播(拉伸图像)
- Vector3位置(简单的翻译,以防你希望你的阴影从你正在阴影的图像中移动)
然后您就可以将它用于任何元素。
推荐阅读
- r - 使用 R 从 ggboxplot 中的 2 个不同数据集进行分组
- python - 不能模拟模拟对象的方法?pytest 中的 call_count 为 0
- javascript - JavaScript 生成的数字总是一样的
- reactjs - 如何在 React 中使用 window.onerror?
- android - 如何让 logcat 崩溃
- php - 如果能够提前返回,减少 if/else 条件的数量
- javascript - 每次组件在 React ContextAPI 下呈现时获取登录用户
- c++ - make_shared 中的 weak_ptr 可以用一个指针而不是两个指针来实现吗?
- tensorflow2.0 - tensorflow 2 - 如何在索引处直接更新 tf.Variable X 中的元素?
- typescript - 无法将枚举分配给 Typescript 中的对象