카메라 초기화 방식 변경

This commit is contained in:
NTG 2025-08-17 15:02:28 +09:00
parent 8031f5cfa0
commit 2f2226e3d4
4 changed files with 44 additions and 64 deletions

View File

@ -274,46 +274,6 @@ PrefabInstance:
propertyPath: skeletonDataAsset propertyPath: skeletonDataAsset
value: value:
objectReference: {fileID: 11400000, guid: 57e95ec929c09d64c9f85a40f849786a, type: 2} objectReference: {fileID: 11400000, guid: 57e95ec929c09d64c9f85a40f849786a, type: 2}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalScale.x
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalScale.y
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalScale.z
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} - target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_LocalEulerAnglesHint.x propertyPath: m_LocalEulerAnglesHint.x
value: 0 value: 0
@ -326,10 +286,6 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1761643478070701343, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_ConstrainProportionsScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2182479135931305606, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3} - target: {fileID: 2182479135931305606, guid: 3db3fc62639929c4ba6031ca4ae6600c, type: 3}
propertyPath: m_Layer propertyPath: m_Layer
value: 6 value: 6

View File

@ -15,19 +15,6 @@ private void Awake()
_cinemachineCamera = GetComponent<CinemachineCamera>(); _cinemachineCamera = GetComponent<CinemachineCamera>();
} }
private void Start()
{
CameraManager.Instance.RegisterCamera(this);
}
private void OnDestroy()
{
if (CameraManager.Instance)
{
CameraManager.Instance.UnRegisterCamera(this);
}
}
public int GetPriority() => _cinemachineCamera.Priority; public int GetPriority() => _cinemachineCamera.Priority;
public void SetPriority(int newPriority) => _cinemachineCamera.Priority = newPriority; public void SetPriority(int newPriority) => _cinemachineCamera.Priority = newPriority;
public void SetFollowTarget(Transform target) => _cinemachineCamera.Follow = target; public void SetFollowTarget(Transform target) => _cinemachineCamera.Follow = target;

View File

@ -2,6 +2,7 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using Unity.Cinemachine; using Unity.Cinemachine;
using UnityEngine;
namespace DDD namespace DDD
{ {
@ -10,13 +11,25 @@ public enum CameraType
None = 0, None = 0,
RestaurantBaseCamera = 1 RestaurantBaseCamera = 1
} }
public class CameraManager : Singleton<CameraManager>, IManager public class CameraManager : Singleton<CameraManager>, IManager
{ {
[ShowInInspector, ReadOnly] [ShowInInspector, ReadOnly]
private Dictionary<CameraType, CameraGameObject> _cameraGameObjects = new(); private Dictionary<CameraType, CameraGameObject> _cameraGameObjects = new();
private CinemachineBrain _cinemachineBrain; private CinemachineBrain _cinemachineBrain;
private TaskCompletionSource<bool> _initializationTask = new();
private void OnDestroy()
{
foreach (var cameraGameObject in _cameraGameObjects.Values)
{
if (cameraGameObject)
{
UnRegisterCamera(cameraGameObject);
}
}
}
public void PreInit() public void PreInit()
{ {
@ -25,12 +38,17 @@ public void PreInit()
public Task Init() public Task Init()
{ {
return Task.CompletedTask;; return Task.CompletedTask;
} }
public void PostInit() public void PostInit()
{ {
var cameraGameObjects = FindObjectsByType<CameraGameObject>(FindObjectsInactive.Include, FindObjectsSortMode.None);
foreach (var cameraGameObject in cameraGameObjects)
{
RegisterCamera(cameraGameObject);
}
_initializationTask.SetResult(true);
} }
public void RegisterCamera(CameraGameObject cameraGameObject) public void RegisterCamera(CameraGameObject cameraGameObject)
@ -42,7 +60,7 @@ public void UnRegisterCamera(CameraGameObject cameraGameObject)
{ {
_cameraGameObjects.Remove(cameraGameObject.CameraType); _cameraGameObjects.Remove(cameraGameObject.CameraType);
} }
public void SwitchCamera(CameraType cameraType, CinemachineBlendDefinition.Styles blendStyle = CinemachineBlendDefinition.Styles.Cut, float blendDuration = 1f) public void SwitchCamera(CameraType cameraType, CinemachineBlendDefinition.Styles blendStyle = CinemachineBlendDefinition.Styles.Cut, float blendDuration = 1f)
{ {
_cinemachineBrain.DefaultBlend = new CinemachineBlendDefinition(blendStyle, blendDuration); _cinemachineBrain.DefaultBlend = new CinemachineBlendDefinition(blendStyle, blendDuration);
@ -52,7 +70,17 @@ public void SwitchCamera(CameraType cameraType, CinemachineBlendDefinition.Style
item.Value.SetPriority(newPriority); item.Value.SetPriority(newPriority);
} }
} }
public CameraGameObject GetCameraGameObject(CameraType cameraType) => _cameraGameObjects[cameraType]; public async Task<CameraGameObject> GetCameraGameObject(CameraType cameraType)
{
await _initializationTask.Task;
if (_cameraGameObjects.TryGetValue(cameraType, out var cameraGameObject))
{
return cameraGameObject;
}
return null;
}
} }
} }

View File

@ -1,3 +1,4 @@
using System.Threading.Tasks;
using UnityEngine; using UnityEngine;
namespace DDD namespace DDD
@ -7,7 +8,15 @@ public class RestaurantPlayerCharacter : RestaurantCharacter
protected override void Awake() protected override void Awake()
{ {
base.Awake(); base.Awake();
_ = Initialize();
}
private async Task Initialize()
{
PlayerManager.Instance.RegisterPlayer(gameObject); PlayerManager.Instance.RegisterPlayer(gameObject);
var cameraObject = await CameraManager.Instance.GetCameraGameObject(CameraType.RestaurantBaseCamera);
cameraObject?.SetFollowAndLookAtTarget(transform);
} }
} }
} }