Rasagar/Library/PackageCache/com.unity.cinemachine/Samples~/Cinemachine Example Scenes/Scenes/2D/MouseScrollZoom2D.cs
2024-08-26 23:07:20 +03:00

60 lines
1.7 KiB
C#

using System;
using UnityEngine;
namespace Cinemachine.Examples
{
[RequireComponent(typeof(CinemachineVirtualCamera))]
[SaveDuringPlay] // Enable SaveDuringPlay for this class
public class MouseScrollZoom2D : MonoBehaviour
{
[Range(0, 10)]
public float ZoomMultiplier = 1f;
[Range(0, 100)]
public float MinZoom = 1f;
[Range(0, 100)]
public float MaxZoom = 50f;
CinemachineVirtualCamera m_VirtualCamera;
float m_OriginalOrthoSize;
void Awake()
{
m_VirtualCamera = GetComponent<CinemachineVirtualCamera>();
m_OriginalOrthoSize = m_VirtualCamera.m_Lens.OrthographicSize;
#if UNITY_EDITOR
// This code shows how to play nicely with the VirtualCamera's SaveDuringPlay functionality
SaveDuringPlay.SaveDuringPlay.OnHotSave -= RestoreOriginalOrthographicSize;
SaveDuringPlay.SaveDuringPlay.OnHotSave += RestoreOriginalOrthographicSize;
#endif
}
#if UNITY_EDITOR
void OnDestroy()
{
SaveDuringPlay.SaveDuringPlay.OnHotSave -= RestoreOriginalOrthographicSize;
}
void RestoreOriginalOrthographicSize()
{
m_VirtualCamera.m_Lens.OrthographicSize = m_OriginalOrthoSize;
}
#endif
void OnValidate()
{
MaxZoom = Mathf.Max(MinZoom, MaxZoom);
}
void Update()
{
#if ENABLE_LEGACY_INPUT_MANAGER
float zoom = m_VirtualCamera.m_Lens.OrthographicSize + Input.mouseScrollDelta.y * ZoomMultiplier;
m_VirtualCamera.m_Lens.OrthographicSize = Mathf.Clamp(zoom, MinZoom, MaxZoom);
#else
InputSystemHelper.EnableBackendsWarningMessage();
#endif
}
}
}