Files
WhaleAdventure_VR/Assets/My project/RoomSelect/Scripts/RoomSelectOpenClose.cs
skrwns304@gmail.com b1e85a5b89 2026-06-19 UI, UI로직
2026-06-19 14:27:40 +09:00

101 lines
2.3 KiB
C#

using UnityEngine;
public class RoomSelectOpenClose : MonoBehaviour
{
[Header("References")]
[SerializeField] private GameObject roomSelectRoot;
[SerializeField] private RoomSelectManager roomSelectManager;
[SerializeField] private Transform targetCamera;
[Header("Open Options")]
[SerializeField] private bool openOnStart = false;
[SerializeField] private bool placeInFrontOfCameraOnOpen = true;
[SerializeField] private bool faceCameraOnOpen = true;
[SerializeField] private float distanceFromCamera = 2.2f;
[SerializeField] private float verticalOffset = -0.1f;
private void Reset()
{
roomSelectRoot = gameObject;
roomSelectManager = GetComponent<RoomSelectManager>();
}
private void Awake()
{
if (roomSelectRoot == null)
{
roomSelectRoot = gameObject;
}
if (roomSelectManager == null)
{
roomSelectManager = roomSelectRoot.GetComponent<RoomSelectManager>();
}
}
private void Start()
{
if (openOnStart)
{
Open();
}
else
{
Close();
}
}
public void Open()
{
if (targetCamera == null && Camera.main != null)
{
targetCamera = Camera.main.transform;
}
if (placeInFrontOfCameraOnOpen && targetCamera != null)
{
Vector3 targetPosition = targetCamera.position + targetCamera.forward * distanceFromCamera;
targetPosition.y += verticalOffset;
roomSelectRoot.transform.position = targetPosition;
}
if (faceCameraOnOpen && targetCamera != null)
{
roomSelectRoot.transform.LookAt(targetCamera);
roomSelectRoot.transform.Rotate(0f, 180f, 0f);
}
roomSelectRoot.SetActive(true);
if (roomSelectManager != null)
{
roomSelectManager.RefreshAll();
}
}
public void Close()
{
if (roomSelectRoot != null)
{
roomSelectRoot.SetActive(false);
}
}
public void Toggle()
{
if (roomSelectRoot == null)
{
return;
}
if (roomSelectRoot.activeSelf)
{
Close();
}
else
{
Open();
}
}
}