unity3d - 如何有效地渲染像素化线?
问题描述
我在 Unity2D 工作,并且有一个可以向各个方向射击的角色。游戏具有移动控制,玩家将通过右侧的操纵杆选择射击方向。
经过测试,我发现很难正确确定射击的目标位置。为了将这一点传达给玩家,我想为玩家添加一种“射击视线”。它根据操纵杆的位置在玩家周围移动。(如图所示)
因为我想要线条像素化(以匹配游戏的设计主题)我不能使用标准组件,因为它不支持这种像素化线条。所以我开始寻找这个问题的解决方案,偶然发现了Bresenham 的线算法
LineRenderer
. 在将它实施到游戏中后,我知道我必须用像素填充哪个 x、y 坐标。目前,这条线中的每一个白色像素GameObject
都有自己SpriteRenderer
的一个白色像素作为精灵。在我的测试场景中,一次渲染最多 400 个像素。我已经在使用对象池系统来最大程度地减少性能拖累。移动这条线会使我在编辑器中从大约 1100 Fps 下降到大约 200 Fps。我知道它在构建游戏中会稍微好一些,但我相信当关卡中存在敌人、动画等时,它会对旧的移动设备造成影响。
所以我的问题是:有没有更好或更有效的方式来渲染精灵?或者(最好)你对如何在不创建〜300+的情况下渲染这条线有更好的想法GameObjects
. (例如着色器(零经验),在纹理上绘制)
我很感激任何能引导我走向正确方向的想法。
解决方案
推荐阅读
- python - 数字过滤算法错误
- apache-flink - Kubernetes 上的 Flink JobManager HA
- php - 如何检查默认情况下设置了(int)数组键还是自定义(int)键?
- php - 删除文件dropzone js laravel错误500
- mysql - ER_BAD_FIELD_ERROR:“on 子句”中的未知列“table.column”
- html - 雨果主题网页未按预期呈现某些元素(使用 Netlify)
- javascript - 渲染元素时遇到问题
- android - Android Studio for Mac:使用原始彩色图像作为初始屏幕
- d3.js - 你能在 .nest() 中使用 if 语句吗?如果不是,将标签分配给数组元素以使其适合多个组的最佳方法是什么
- javascript - 如何修复控制台警告“资源...已使用链接预加载进行预加载,但在窗口加载事件后的几秒钟内未使用”?