搜索 Unity

新功能Photo Mode:在游戏中拍摄照片

2021年8月24日 类别 游戏 | 4 分 阅读
Photo Mode Demo Package title and preview image
Photo Mode Demo Package title and preview image
涵盖的主题
分享

Is this article helpful for you?

Thank you for your feedback!

最新的样例项目包含一个虚拟摄影系统,可用于定制游戏的屏幕截图,本文将大致介绍Photo Mode及其使用方法。

虚拟摄影作为一种补充性内容逐渐在各类游戏中受到欢迎,玩家可使用照相功能表达、保存和分享自己最爱的游戏时刻。鼓励玩家分享自己的摄影作品有益于游戏本身:这些照片可以提高玩家的参与度与社区活跃度,扩大游戏的影响力。

我们本次发布的Photo Mode 演示包就是为了帮助开发者们学习怎样在游戏中加入拍照功能,该资源包目前支持使用通用渲染管线(URP)的PC和主机游戏。演示包中包含了多种相机镜头、图像调整和UI操作,允许玩家在自定义的拍照模式中调整游戏环境、截取完美的屏幕截图。

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

在不同Unity项目中的Photo Mode使用案例

如想尝试使用,请在此处下载Photo Mode资源包,将PhotoMode Prefab添加到游戏中,并按照这些步骤为Unity场景和Forward Renderer创建引用。完成后,你便能在游戏中设置相机位置、景深、镜头光晕、覆盖贴纸、滤镜等照片选项。模块化的Photo Mode还支持灵活地改变界面外观和按键行为,甚至支持创建自定义效果。请在Photo Mode Overview 视频中了解详细的设置过程。

Photo Mode在设计时考虑到了与各平台原生截图功能的兼容,附带的Hide UI选项可在视图中隐藏UI来方便保存照片,照片在截取后可通过设备的分享或截图按钮进行保存。

本演示包的运作由几种功能和系统支撑,这里我将快速介绍下各系统的使用方式:

  • UI菜单系统:大多数Photo Mode都包含一个滚动条和输入框,选项依靠Unity Event调用对应的方法,在运行期间调整数值,这些参数可以是相应的Cinemachine、Volume或UI设置。所有方法皆可在PhotoMode.cs脚本中找到。滚动条的最小和最大值可在脚本组件中设定,本演示包包含了滚动文本等多种自定义UI,及一个Photo Mode的贴纸摆放系统。  
  • Input System:本演示包还使用了Input System,支持快速修改Photo Mode的控制键位,防止与原项目的输入键位冲突,还支持在键盘与游戏手柄两种控制方法之间切换。鉴于在Photo Mode中使用Player Input组件可能会使其与游戏已有的Input System发生冲突,我们借助了Input System API来新建了独特的输入操作引用。这些引用具体是在PhotoModeInputs.cs脚本中实现的,让用户能够在Photo Mode中进行输入操作,而不会影响到Player Input组件。我们还建立了自己的事件系统,用以在Photo Mode下覆盖原项目的事件系统。  
  • Cinemachine:出于模块化的考虑,我们为Photo Mode创建了单独的虚拟摄像机,使其能在不影响原摄像机的前提下完成镜头的环绕或升降。要想运行这个单独的摄像机,我们必须要在场景中创建一个Cinemachine Brain组件,由组件自动完成摄像机的搜寻,及PhotoMode.cs脚本与摄像机的关联。  
  • Volumes(体积)组件:Focus Distance(焦距)、Aperture(光圈)、Exposure(曝光)、Contrast(对比度)和Saturation(色饱和度)等镜头设置由Photo Mode的全局Volume组件管理。Volume组件可调整参数来匹配目标工程原来的后期处理设置。  
  • Shader Graph:Photo Mode中的多种滤镜效果皆使用Shader Graph制作而来,并借助URP的Render Pass功能进行实际应用。Shader Graph支持实现和定制新的渲染通道、扩展渲染管线。在Photo Mode中,我们特地使用了一个Blit方法将Shader Graph着色器应用到纹理中,实现一种全屏滤镜的效果。  
  • Custom Sticker System(自定义贴纸系统):Photo Mode的贴纸系统借助EventSystem的Navigation参数来创建一个位置坐标系,用于修改贴纸位置。放置贴纸的光标可显示贴纸的位置、角度、比例和图案,作为粘贴的信息参考。一旦贴纸放置完成的行为被触发,PhotoModeStickerController.cs脚本就会从当前的贴纸样本库中选中贴纸,再应用给定的变换值与图片设定,并将其设为“可见”。
Screenshots of Photo Mode being used in different Unity projects

我们非常期待各位能在Photo Mode演示资源包中做出满意的效果。如果你想分享自己的使用体验或展示自己的作品,可在Photo Mode论坛帖DiscordTwitterFacebook的#MadeWithUnity话题下与我们分享。

2021年8月24日 类别 游戏 | 4 分 阅读

Is this article helpful for you?

Thank you for your feedback!

涵盖的主题
相关文章