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视图同步的主要内容,如果未能解决你的问题,请参考以下文章