文章目录
- 前言
- 地址
- 介绍
- 使用例子
- 完结
前言
关于3D描边,其实之前有用shader弄过一个:【实现100个unity特效】shader实现3D物品闪光和描边效果
但是很遗憾的是他不支持URP项目,所以现在推荐这款插件,他能很好的支持URP,对于HDRP我没有试过,官方也没有说明,需要的可以去试试看
地址
https://assetstore.unity.com/packages/tools/particles-effects/quick-outline-115488#reviews
介绍
快速轮廓是一个世界空间轮廓工具,可为任何对象添加实心轮廓。
它非常适合 VR。
许多轮廓着色器在屏幕空间中工作,这使得它们的速度很慢,而且它们不支持 MSAA。如果他们确实在世界空间中工作,那么他们在硬角落里有“间隙”。快速大纲解决了这些问题。
Quick Outline 最初是为 VR 设计的,因此它支持实例化立体渲染和 MSAA。它在任何 HMD 中看起来都很棒,并且不会影响帧速率。
- 专为 VR 设计(包括单次通过)
- 支持 MSAA
- 与后处理堆栈
兼容 - 多种轮廓模式 - 轻巧且高性能
使用例子
预制体挂载脚本
效果
代码控制轮廓显示隐藏
private void Update()
{
// 发射一条从相机视口中心向屏幕内部发出的射线
Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
RaycastHit hit;
// 检测射线是否击中物体
if (Physics.Raycast(ray, out hit))
{
GameObject objectHitByRaycast = hit.transform.gameObject;
// 如果被射线击中的物体有 Weapon 组件
if (objectHitByRaycast.GetComponent<Weapon>())
{
// 获取 Weapon 组件并启用 outline
Weapon hoveredWeapon = objectHitByRaycast.GetComponent<Weapon>();
hoveredWeapon.GetComponent<Outline>().enabled = true;
}
else
{
// 如果被射线击中的物体没有 Weapon 组件,或者没有 Outline 组件,则禁用 outline
if (hoveredWeapon != null)
{
hoveredWeapon.GetComponent<Outline>().enabled = false;
}
}
}
}
完结
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,以便我第一时间收到反馈,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~