53 lines
1.3 KiB
C#
53 lines
1.3 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class MemoryPiecePickup : MonoBehaviour
|
|
{
|
|
[Header("Reference")]
|
|
[SerializeField] private MemoryProgressManager memoryProgressManager;
|
|
|
|
[Header("Settings")]
|
|
[SerializeField] private int amount = 1;
|
|
[SerializeField] private bool destroyAfterPickup = true;
|
|
[SerializeField] private bool autoFindManager = true;
|
|
[SerializeField] private string playerTag = "Player";
|
|
|
|
[Header("Events")]
|
|
public UnityEvent onPickedUp;
|
|
|
|
private bool pickedUp;
|
|
|
|
private void Awake()
|
|
{
|
|
if (memoryProgressManager == null && autoFindManager)
|
|
memoryProgressManager = FindFirstObjectByType<MemoryProgressManager>();
|
|
}
|
|
|
|
public void PickUp()
|
|
{
|
|
if (pickedUp)
|
|
return;
|
|
|
|
pickedUp = true;
|
|
|
|
if (memoryProgressManager != null)
|
|
memoryProgressManager.AddMemoryPiece(amount);
|
|
else
|
|
Debug.LogWarning("[MemoryPiecePickup] MemoryProgressManager가 연결되지 않았습니다.");
|
|
|
|
onPickedUp?.Invoke();
|
|
|
|
if (destroyAfterPickup)
|
|
Destroy(gameObject);
|
|
}
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
if (pickedUp)
|
|
return;
|
|
|
|
if (other.CompareTag(playerTag))
|
|
PickUp();
|
|
}
|
|
}
|