2025-04-25 21:14:54 +09:00

45 lines
1.3 KiB
C#

using UnityEngine;
[ExecuteInEditMode]
public class SkyboxRotator : MonoBehaviour
{
// Skybox의 회전 속도를 설정할 수 있는 공개 변수
[Range(0f, 360f)] public float rotationSpeed = 10f;
// Skybox 재질을 직접 지정할 수 있는 옵션
public Material customSkyboxMaterial;
// 현재 씬에서 적용된 Skybox의 회전 각도
private float skyboxRotation;
void Start()
{
// 씬에 적용된 Skybox가 없고, 사용자 정의 Skybox가 설정되어 있으면 적용
if (RenderSettings.skybox == null && customSkyboxMaterial != null)
{
RenderSettings.skybox = customSkyboxMaterial;
}
}
// Skybox 회전을 위한 함수
void Update()
{
// Skybox를 회전시키는 로직
skyboxRotation += rotationSpeed * Time.deltaTime;
if (skyboxRotation > 360f)
{
skyboxRotation -= 360f;
}
// Skybox 회전 값 적용
RenderSettings.skybox.SetFloat("_Rotation", skyboxRotation);
}
// 외부에서 Skybox 회전 값을 수동으로 설정하는 함수 (예: Timeline에서 사용)
public void SetSkyboxRotation(float rotation)
{
skyboxRotation = rotation;
RenderSettings.skybox.SetFloat("_Rotation", skyboxRotation);
}
}