카메라 초기화 방식 변경

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
value:
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}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
@ -326,10 +286,6 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 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}
propertyPath: m_Layer
value: 6

View File

@ -15,19 +15,6 @@ private void Awake()
_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 void SetPriority(int newPriority) => _cinemachineCamera.Priority = newPriority;
public void SetFollowTarget(Transform target) => _cinemachineCamera.Follow = target;

View File

@ -2,6 +2,7 @@
using System.Threading.Tasks;
using Sirenix.OdinInspector;
using Unity.Cinemachine;
using UnityEngine;
namespace DDD
{
@ -10,13 +11,25 @@ public enum CameraType
None = 0,
RestaurantBaseCamera = 1
}
public class CameraManager : Singleton<CameraManager>, IManager
{
[ShowInInspector, ReadOnly]
private Dictionary<CameraType, CameraGameObject> _cameraGameObjects = new();
private CinemachineBrain _cinemachineBrain;
private TaskCompletionSource<bool> _initializationTask = new();
private void OnDestroy()
{
foreach (var cameraGameObject in _cameraGameObjects.Values)
{
if (cameraGameObject)
{
UnRegisterCamera(cameraGameObject);
}
}
}
public void PreInit()
{
@ -25,12 +38,17 @@ public void PreInit()
public Task Init()
{
return Task.CompletedTask;;
return Task.CompletedTask;
}
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)
@ -42,7 +60,7 @@ public void UnRegisterCamera(CameraGameObject cameraGameObject)
{
_cameraGameObjects.Remove(cameraGameObject.CameraType);
}
public void SwitchCamera(CameraType cameraType, CinemachineBlendDefinition.Styles blendStyle = CinemachineBlendDefinition.Styles.Cut, float blendDuration = 1f)
{
_cinemachineBrain.DefaultBlend = new CinemachineBlendDefinition(blendStyle, blendDuration);
@ -52,7 +70,17 @@ public void SwitchCamera(CameraType cameraType, CinemachineBlendDefinition.Style
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;
namespace DDD
@ -7,7 +8,15 @@ public class RestaurantPlayerCharacter : RestaurantCharacter
protected override void Awake()
{
base.Awake();
_ = Initialize();
}
private async Task Initialize()
{
PlayerManager.Instance.RegisterPlayer(gameObject);
var cameraObject = await CameraManager.Instance.GetCameraGameObject(CameraType.RestaurantBaseCamera);
cameraObject?.SetFollowAndLookAtTarget(transform);
}
}
}