Unity中Camera.main和Camera.current的区别

这篇具有很好参考价值的文章主要介绍了Unity中Camera.main和Camera.current的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Unity中,Camera.main和Camera.current都是用来获取相机,那到底有什么区别呢?

一、异同及注意事项

1、相同点:

  • Camera.main和Camera.current都是用于获取相机的属性。
  • 它们都是静态属性,可以通过Camera类访问。
  • 它们都返回一个相机对象。

2、不同点:

  • Camera.main返回当前场景中激活的相机(如果存在多个相机,则返回其中的一个),而Camera.current返回当前渲染图形的相机。
  • Camera.main通常用于在代码中获取当前活动的相机,而Camera.current通常用于在渲染图形时获取当前相机的属性和状态。
  • Camera.current只在渲染图形期间有效,而在渲染图形之外的代码中,Camera.current属性的值为null。而Camera.main在任何时候都可以使用,但需要注意性能开销。

3、注意事项:

  • Camera.main的使用应该尽量避免在频繁调用的代码中,由于需要在场景中查找激活的相机,因此它的性能开销可能会比较高。如果需要在多个位置获取当前活动的相机,建议将其缓存到变量中,并在需要时使用该变量。
  • Camera.current只在渲染图形期间有效,因此在渲染图形之外的代码中,使用Camera.current属性会导致返回null。如果需要在渲染图形外的代码中获取相机的属性和状态,应该使用Camera.main属性。
  • 在使用Camera.current时,需要注意在正确的上下文中使用它。例如,在OnRenderImage方法中,Camera.current已被设置为当前渲染图形的相机,因此可以直接使用Camera.current。但在其他上下文中,Camera.current可能为null,因此需要进行空值检查。
  • 在使用Camera.main时,需要注意性能开销。由于需要在场景中查找激活的相机,因此Camera.main的使用应该尽量避免在频繁调用的代码中。如果需要在多个位置获取当前活动的相机,建议将其缓存到变量中,并在需要时使用该变量。

二、官方文档附录

附录1:Camera.current的官方说明
Unity中Camera.main和Camera.current的区别,unity,camera

Unity关于Camera.current属性的官方文档解释:

【1】Camera.current属性是一个静态属性,用于获取当前使用的相机对象,仅用于低级别的渲染控制(只读)。

【2】大多数情况下,您应该使用Camera.main属性来获取场景中的主相机对象。只有在实现以下事件时才应该使用Camera.current属性:MonoBehaviour.OnRenderImage、MonoBehaviour.OnPreRender、MonoBehaviour.OnPostRender。

【3】在大多数情况下,建议使用Camera.main属性来获取场景中的主相机对象。只有在需要执行特殊的渲染操作时才应使用Camera.current属性。例如,在实现自定义后期处理效果时,您可以使用Camera.current属性来访问当前渲染的相机对象并进行特殊的图像处理操作。

【注意事项】:Camera.current属性只在特定的渲染事件中才能正常工作,并且在其他情况下将返回null。因此,在使用Camera.current属性时,您应该确保它是在正确的上下文中使用,并且已正确初始化。

附录2:Camer.main的官方说明
Unity中Camera.main和Camera.current的区别,unity,camera文章来源地址https://www.toymoban.com/news/detail-732016.html

Camera.main属性的官方文档解释:

【1】Camera.main属性是一个只读属性,用于获取场景中被标记为“MainCamera”且启用的第一个相机组件。

【2】如果场景中没有被标记为“MainCamera”且启用的相机组件,则Camera.main属性将返回null。

【3】在内部,Unity缓存了所有被标记为“MainCamera”的GameObject对象。当您访问Camera.main属性时,Unity会从其缓存中返回第一个有效结果。访问此属性会产生一些CPU开销,与调用GameObject.GetComponent类似。在需要考虑CPU性能的情况下,可以考虑缓存此属性。

【注意事项】:Camera.main属性通常用于获取场景中的主相机对象,因为它提供了一种简单而方便的方式来访问主相机。但是,如果场景中有多个相机对象被标记为“MainCamera”,则Camera.main属性将返回其中一个相机对象,但您无法确定它是哪个相机对象。因此,在使用Camera.main属性时,您应该确保场景中只有一个相机对象被标记为“MainCamera”。

到了这里,关于Unity中Camera.main和Camera.current的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity Camera设置-Culling Mask

    参考文档:Unity中Camera参数—Culling Mask详解_-MCQ-的博客-CSDN博客_unity相机cullingmask 什么是Culling Mask?它是Camera的一个属性, 包含或忽略要由摄像机渲染的对象层。简单来说就是摄像机照射场景中哪些层级的物体。 理解起来比较简单,怎么动态赋值稍微麻烦一点,用过一次之后

    2024年02月15日
    浏览(44)
  • unity脚本中的camera相关代码

    Camera相关代码共有两个脚本,包括CameraContral和Sample_move_Camera 这是一个简单的 Unity 脚本,名为 `CameraContral`,用于控制摄像机的行为。 当前的代码中,`Start` 方法和 `Update` 方法均为空,没有具体的实现。 在 `Start` 方法中,你可以进行一次性的初始化,例如设置摄像机的初始位

    2024年04月13日
    浏览(24)
  • Unity 2020 URP Camera UI相机问题

    现在正在开发中的项目使用的URP,发现相机结构有变化直接使用场景相机和UI相机无法正常显示。 还是使用两个相机,场景相机使用Base模式,UI相机使用Overlay模式。 在场景相机的Stack中添加UI相机即可。 相当于UI相机叠加在上面,越靠下的相机优先级越高。 这样就可以实现

    2024年02月12日
    浏览(25)
  • Unity中Camera参数—Culling Mask详解

    Culling Mask 如下图所示: 显示层级如下: 应用: Culling Mask :主要是相机针对不同层级的物体进行渲染的操作(想让相机渲染哪个层就勾选哪个层) 层级介绍: unity中的层前7个被unity锁定,由低到高分别是nothing/everything/default/transparentFX/ignore raycast/water/UI 从第8个到第31个可以

    2024年02月11日
    浏览(23)
  • 【Unity URP】URP Camera使用及动态设置

    官方文档:   摄像机 | Universal RP | 12.1.1 https://docs.unity3d.com/cn/Packages/com.unity.render-pipelines.universal@12.1/manual/cameras.html 相机类型: Render Type(渲染类型) Base(基础相机):渲染到特定渲染目标的通用相机,场景中必须至少有一个。 Overlay(叠加相机):将其视图渲染在另一个摄

    2024年02月12日
    浏览(29)
  • Unity的Camera类——视觉掌控与深度解析(下)

    欢迎阅读本篇博客,这章我们将深入探讨 Unity 游戏引擎中 Camera 类的委托和枚举。摄像机在游戏开发中扮演着关键角色,它不仅定义了玩家视角的窗口,还影响着游戏的视觉表达和整体体验。理解和正确使用 Camera 类的枚举和委托,可以极大地提升你的游戏视觉效果和性能表

    2024年02月02日
    浏览(27)
  • 【unity每日一记】 Camera相机+ Screen屏幕+动画机

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月10日
    浏览(60)
  • Unity环境下实现Camera高帧率RTMP推送

    Unity下RTMP直播背景方面不再赘述,今天主要讨论的是,Unity环境下,如何实现Camera高帧率RTMP推送,这里提到的高帧率,不再局限于常规环境下的30帧,以VR头显为例,更高的帧率(比如50帧),体验会更好。 Android平台Unity推送Camera Windows平台Unity推送Camera 之前,我们老早实现了

    2023年04月16日
    浏览(28)
  • Unity由“鼠标点不准物体”引发的Camera的相关思考

            前段一个同事在使用Unity开发时遇到一个奇怪的问题,使用左键点击发射射线的方式选择物体,总是选不准,尤其是小的物体,鼠标点击到物体上,有时能选上,有时选不上,偶尔点击到物体旁边反而能选上,于是他让我帮看看咋回事。我第一个想法是也许代码写

    2024年02月03日
    浏览(24)
  • 【Unity 摄像机组件】Camera场景摄像机的认识

    OK 同学们好,本节课我们开始学习摄像机创建以及摄像机的属性。 CH3.3 PPT02 摄像机相机是玩家用来观看游戏场景世界的基本设备,当游戏运行的时候,游戏画面就是摄像机看到的画面。 PPT 3一个场景中可以有无数个摄像机,最终游戏运行的画面可能是很多个摄像机拼凑而成。

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包