在一个叫Timeline的空物体下创建了一个Timeline,一个叫virtualCameraParent的空物体下有三个虚拟相机,分别叫play CM vcam2、dini CM vcam3、dor CM vcam4,画布下有一个play的空物体(Toggle Group)下有三个Toggle,分别叫PlayToggle、DiniToggle、DorToggle。
Timeline上面有一条Cinemachine Track,把主相机赋给了它,轨道上分别放置了三个虚拟相机,还有三条Animation Track,在对应的虚拟相机位置上分别做了动画。
想要实现的功能:分别点击不同的Toggle,启动Timeline上不同的虚拟相机和动画
using UnityEngine;
using UnityEngine.Playables;
using Cinemachine;
using UnityEngine.Timeline;
public class test : MonoBehaviour
{
public PlayableDirector timeline; // Timeline 的 PlayableDirector 组件
public GameObject virtualCameraParent; // 虚拟相机的父对象
public void PlayToggle()
{
PlayVirtualCamera("play"); // 触发 play 相机和动画
timeline.Play(); // 播放 Timeline
}
public void DiniToggle()
{
PlayVirtualCamera("dini"); // 触发 dini 相机和动画
timeline.Play();
}
public void DorToggle()
{
PlayVirtualCamera("dor"); // 触发 dor 相机和动画
timeline.Play();
}
private void PlayVirtualCamera(string name)
{
// 获取虚拟相机
CinemachineVirtualCamera virtualCamera = virtualCameraParent.transform.Find(name).GetComponent<CinemachineVirtualCamera>();
// 设置当前的虚拟相机为激活状态
virtualCamera.gameObject.SetActive(true);
// 关闭其他相机
foreach (Transform child in virtualCameraParent.transform)
{
if (child.name != name)
{
child.gameObject.SetActive(false);
}
}
}
}