+ 전투에서 사용되는 Item 오브젝트의 InteractionUi의 camera를 UiCamera로 연동 + Item의 드랍 방식을 같은 위치에서 랜덤한 위치로 흩뿌리는 방식으로 변경 + 술통, 쓰레기통 상호작용 추가 + 손님이 음료를 요구할 때, 음료 전달 기능 추가 + 가구 Opaque Unlit으로 재질 변경
77 lines
2.2 KiB
C#
77 lines
2.2 KiB
C#
using BlueWater.Interfaces;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
|
|
namespace BlueWater.Tycoons
|
|
{
|
|
public abstract class InteractionFurniture : MonoBehaviour, IPlayerInteraction
|
|
{
|
|
[field: SerializeField]
|
|
public Transform Transform { get; private set; }
|
|
|
|
[field: SerializeField]
|
|
public Canvas InteractionCanvas { get; private set; }
|
|
|
|
[field: SerializeField]
|
|
public Transform InteractionUi { get; private set; }
|
|
|
|
[field: SerializeField]
|
|
public bool EnableInteraction { get; private set; } = true;
|
|
|
|
private bool _isQuitting;
|
|
|
|
protected virtual void Awake()
|
|
{
|
|
InitializeComponents();
|
|
}
|
|
|
|
protected virtual void Start()
|
|
{
|
|
if (EnableInteraction)
|
|
{
|
|
GameManager.Instance.CurrentTycoonPlayer.TycoonInput.RegisterPlayerInteraction(this);
|
|
}
|
|
}
|
|
|
|
private void OnApplicationQuit()
|
|
{
|
|
_isQuitting = true;
|
|
}
|
|
|
|
protected virtual void OnDestroy()
|
|
{
|
|
if (_isQuitting) return;
|
|
|
|
if (EnableInteraction)
|
|
{
|
|
GameManager.Instance.CurrentTycoonPlayer.TycoonInput.UnregisterPlayerInteraction(this);
|
|
}
|
|
}
|
|
|
|
[Button("컴포넌트 초기화")]
|
|
protected virtual void InitializeComponents()
|
|
{
|
|
Transform = transform;
|
|
InteractionCanvas = transform.Find("InteractionCanvas").GetComponent<Canvas>();
|
|
InteractionCanvas.GetComponent<Canvas>().worldCamera = Camera.main;
|
|
InteractionUi = InteractionCanvas.transform.Find("InteractionUi");
|
|
InteractionUi.localScale = Vector3.one * (1 / transform.localScale.x);
|
|
}
|
|
|
|
public abstract void Interaction();
|
|
|
|
public void ShowInteractionUi()
|
|
{
|
|
if (!InteractionCanvas) return;
|
|
|
|
InteractionCanvas.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void HideInteractionUi()
|
|
{
|
|
if (!InteractionCanvas) return;
|
|
|
|
InteractionCanvas.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
} |