搜索 Unity

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

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

最新的样例项目包含一个虚拟摄影系统,可用于定制游戏的屏幕截图,本文将大致介绍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 分 阅读
涵盖的主题
相关文章