2026-06-19 UI, UI로직
This commit is contained in:
100
Assets/My project/RoomSelect/Scripts/RoomSelectOpenClose.cs
Normal file
100
Assets/My project/RoomSelect/Scripts/RoomSelectOpenClose.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user