unityGame视图与Scene视图同步

Posted 程序员茶馆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unityGame视图与Scene视图同步相关的知识,希望对你有一定的参考价值。

一.应用背景

在大中型项目中,经常需要Game视图和Scene视图实时同步,以便观察分析场景的渲染效果,因此我们需要实时将Game视图相机调整到Scene视图中场景观察相机的状态,主要涉及到Game视图相机的位置(position)及旋转角(rotation)的调整。

二.设计思想

1.通过SceneView.lastActiveSceneView.camera获取当前Scene视图中的观察相机;

2.每帧调整Game视图相机的position和rotation;

3.为了保证脚本在编辑器模式下也能达到我们想要的效果,因此需要给脚本添加ExecuteInEditMode特性或者ExecuteAlways特性;

4.为了确保每帧都能正常调用相机调整的代码,因此需要将调整的代码放到OnRenderObject系统回调函数中(至于为什么不放到Update系统回调函数中,是因为Update函数在编辑器模式下即使添加了ExecuteInEditMode/ExecuteAlways特性,也只有当场景有变化时才调用(比如某个对象位置变动),而不是每帧都调用,即在编辑器模式下不能确保脚本的Update函数每帧都能被调用)。

三.核心源码

using UnityEngine;
using UnityEditor;
[ExecuteInEditMode]
public class CameraFollow : MonoBehaviour

    private void OnRenderObject()
    
        transform.position = SceneView.lastActiveSceneView.camera.transform.position;
        transform.rotation = SceneView.lastActiveSceneView.camera.transform.rotation;
    

四.测试结果

将脚本挂在需要控制的相机上,测试效果如下:

 

以上是关于unityGame视图与Scene视图同步的主要内容,如果未能解决你的问题,请参考以下文章

sql数据库组成视图的多个表中数据增加,视图怎么不同步变啊,愁死了~亲们帮忙呀~

unityUnity界面scene视图[1]

Scene View Control Bar场景视图控制条

Unity2.5 场景视图(Scene)

Unity游戏结构与引擎视图

如何在 Scene Kit 或 ARkit 中的 Camera 渲染的视图中调暗灯光?