在Unity3D的开发过程中,我们经常需要调整场景视图(Scene View)的相机位置和角度以便更好地观察和编辑场景。为了提高效率,我们可能会希望场景视图相机能够自动跟随某个特定的游戏对象,比如主角或者重要的场景元素。今天,我将分享一个简单的C#脚本,它可以使Scene View相机跟随任何指定的目标对象。
代码示例
using UnityEngine;
using UnityEditor;
[ExecuteAlways] // 确保编辑器模式下也执行此脚本
public class SceneViewFollower : MonoBehaviour
{
public Transform target; // 目标对象
public Vector3 offset; // 平移偏移量
public Vector3 rotationOffset; // 旋转偏移量
public bool IsFollower = true;
void Update()
{
if (!IsFollower)
{
return;
}
// 确保目标不为空
if (target != null)
{
// 获取场景视图
SceneView sceneView = SceneView.lastActiveSceneView;
if (sceneView != null)
{
// 计算场景视图相机的新位置
Vector3 newPosition = target.position + offset;
// 应用旋转偏移量
Quaternion newRotation = target.rotation * Quaternion.Euler(rotationOffset);
// 设置场景视图相机的位置和方向
sceneView.LookAt(newPosition, newRotation, 0.5f);
}
}
}
}
代码功能
SceneViewFollower
脚本允许开发者指定一个目标对象(Transform target
),并设置相机与目标对象之间的偏移量(Vector3 offset
)和旋转偏移量(Vector3 rotationOffset
)。当目标对象移动或旋转时,场景视图相机将相应地更新其位置和方向。
代码解析
-
属性和字段
-
target
:这是你希望相机跟随的游戏对象。 -
offset
:这是相机相对于目标对象的位置偏移量。 -
rotationOffset
:这是相机相对于目标对象的旋转偏移量。 -
IsFollower
:一个布尔值,用于控制是否启用相机跟随功能。
-
-
Update方法
-
Update
方法在每帧都会被调用。 - 如果
IsFollower
设置为false
,脚本将不会执行任何操作。 - 如果目标对象非空,脚本将获取场景视图并计算新的相机位置和方向。
-
-
相机位置和方向计算
- 使用目标对象的位置加上偏移量来计算新的相机位置。
- 使用目标对象的旋转加上旋转偏移量来计算新的相机方向。
- 使用
SceneView.LookAt
方法来设置场景视图相机的位置和方向。
使用指南
-
创建脚本
- 在Unity编辑器中,右键点击项目面板,选择
Create > C# Script
。 - 命名脚本为
SceneViewFollower
。
- 在Unity编辑器中,右键点击项目面板,选择
-
附加脚本
- 将脚本附加到场景中的任何游戏对象上。
-
配置参数
- 在脚本组件上,将
target
设置为你希望相机跟随的游戏对象。 - 调整
offset
和rotationOffset
以获得理想的相机位置和方向。
- 在脚本组件上,将
-
激活跟随
- 确保
IsFollower
选项被选中以激活相机跟随功能。
- 确保
-
测试
- 在编辑器中移动或旋转目标对象,场景视图相机应该会相应地更新。
结语
通过使用这个简单的 SceneViewFollower
脚本,开发者可以极大地提高在Unity3D中编辑和预览场景的效率。不再需要手动调整场景视图相机的位置和角度,只需指定一个目标对象,相机就会自动跟随。