45 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|