请看一下这张照片
这是从photoshop出口的游戏的最终外观
我用红色标记标记了ui精灵,用蓝色标记标记了游戏精灵
我的问题是我应该如何在unity3d 2d游戏开发中正确使用这些精灵。
这是我能想到的方式:
Image
组件(垂直或水平,因此我可以将它们放在角落中,它将适用于每个分辨率)Sprite Renderer
组件Sprite Renderer
组件在画布中使用蓝色精灵,并将画布渲染模式设置为Screen Space - Camera
Image
组件这些方式都可能是错的,但这些都是我现在能想到的 我对你的所有建议持开放态度 我的统一版本是2017.2.0f,我希望游戏适用于所有分辨率。
答案 0 :(得分:7)
我会将Image
/ Canvas
系统用于所有UI元素(红色精灵)。这样,您可以利用CanvasScaler
组件和锚定来使UI分辨率独立。 (另见HOWTO-UIMultiResolution)
游戏玩法精灵(蓝色)只是世界空间中的SpriteRenderer
个组件,带有常规的正交相机。这比在UI画布上执行所有操作具有更好的性能。此外,游戏代码将(从经验)在世界空间中比在处理画布位置时更容易,因为UI布局系统可能会添加额外的转换/复杂性。
最后,你可能想要调整蓝色精灵'通过相机的正交尺寸属性来确定尺寸。对此没有一个通用的解决方案,因此考虑到从Screen.width
和Screen.height
返回的实际屏幕分辨率以及实际方面(横向与纵向),您将不得不进行权衡。通常,我建议查看CanvasScaler
源代码,以查看如何进行不同缩放的示例。 (参见Unity Technologies UI source on Bitbucket,尤其是第134行的方法HandleScaleWithScreenSize
)。
答案 1 :(得分:3)
SpriteRenderer
放入画布中。请改用Image
组件,您可以更好地控制图像的实际大小/顺序。Screen Space - Overlay
画布。这样您就不必将相机绑定到每个画布,并且可以轻松地将UI分离到另一个场景中,然后根据需要将Load Scene Additive它们放入主场景中。这样可以减少混乱和更有组织的场景(想象一下,必须在一个场景中放置选项,商店,库存,成就等画布。)Screen Space - Camera
。答案 2 :(得分:1)
IMO如果您要移动相机或放大/缩小,请使用精灵渲染器进行游戏,使用UGUI进行游戏UI。 但是如果你的游戏有静态屏幕,不像前面描述的情况那么你必须去UGUI(图像或原始图像)。
答案 3 :(得分:1)
我会使用Canvas作为红色标记精灵,因为这是需要像UI一样的UI元素,并获得RectTrasnform的冒险来修改它以适应您的屏幕需求,即锚定,使用Text和其他东西来填充UI内容。
并使用Sprites作为蓝色市场精灵,并使用Prespective Camera渲染它,使Tree精灵稍微高一点/向后以轻松获得良好的视差效果。
为什么我们需要用精灵放置它并且不要将它放在画布上,因为RectTransform和Transform的行为不同,如果要应用Physic,请使用Transform,当你使用Transform而不是RectTransform时,你将使用它世界空间,但是如果你将RectTransform与Canvas一起使用,你将在屏幕空间中工作,这使得它变得更难和无法使用。