【发布时间】:2022-12-18 16:37:52
【问题描述】:
在我使用 Unity 的 Unity 防御游戏中,每个敌人都有自己的 HP 条,使用 UI 滑块和广告牌系统呈现 as such.
我担心的是可能有too many canvas elements in the scene。是否有其他选择,或者我的解决方案在性能方面是否足够有效
【问题讨论】:
标签: unity3d
在我使用 Unity 的 Unity 防御游戏中,每个敌人都有自己的 HP 条,使用 UI 滑块和广告牌系统呈现 as such.
我担心的是可能有too many canvas elements in the scene。是否有其他选择,或者我的解决方案在性能方面是否足够有效
【问题讨论】:
标签: unity3d
假设您不会同时在屏幕上显示数百个敌人,那么您在性能方面应该没问题。如果您发现性能下降,您总是可以为 on-screen UI components 引入一个 ObjectPool。
我建议将 Canvas RectTransform 的比例设置为类似 0.01 的比例,这样它在屏幕上占用的空间就更少了。然后重新调整现有 UI 元素的大小以匹配此比例。
一张画布
假设您正在寻找在 Unity 中创建世界空间 UI 健康栏的替代解决方案。在这种情况下,您可以使用单个画布并根据它们应该附加到的游戏对象的位置动态更改 UI 元素在其中的位置。
一种方法是使用 RectTransformUtility 的 ScreenPointToLocalPointInRectangle 方法并将游戏对象的世界位置转换为画布内的本地位置。然后,您可以使用 rectTransform.anchoredPosition 属性设置 UI 元素在画布中的位置。
但是,使用单个画布显示附加到不同游戏对象的多个 UI 元素也有缺点。它会导致画布变得“脏”,这意味着每一帧都需要重新绘制。
【讨论】: