
+ ItemLootUi 클래스 및 프리팹 생성 + VisualFeedbackManager에서 사용하던 PostProcessing 기능을 OceanCamera로 변경 + OceanUi에 있던 ProcessBar 클래스 따로 생성 + Cannon 공격 로직 변경 ㄴ Boids의 FishSpot과 상호작용으로 변경
85 lines
2.9 KiB
C#
85 lines
2.9 KiB
C#
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class OceanUi : MonoBehaviour
|
|
{
|
|
[Title("초기화 방식")]
|
|
[SerializeField] private bool autoInit = true;
|
|
|
|
[field: Title("UI")]
|
|
[field: SerializeField] public ProcessBar ProcessBar { get; set; }
|
|
[SerializeField] private Vector3 processBarOffset = Vector3.zero;
|
|
|
|
[field: SerializeField] public Slider ShipBoostSlider { get; set; }
|
|
|
|
[field: SerializeField] public GameObject SpeedLines { get; set; }
|
|
|
|
[field: SerializeField] public ItemLootUi ItemLootUi { get; set; }
|
|
[SerializeField] private Vector2 itemLootOffset;
|
|
|
|
private Canvas canvas;
|
|
private RectTransform canvasRectTransform;
|
|
private Transform itemsLoot;
|
|
|
|
[Button("셋팅 초기화")]
|
|
private void Init()
|
|
{
|
|
canvas = GetComponent<Canvas>();
|
|
if (!canvas)
|
|
{
|
|
Debug.LogError("canvas is null error");
|
|
return;
|
|
}
|
|
canvasRectTransform = canvas.GetComponent<RectTransform>();
|
|
|
|
var processBar = canvas.transform.Find("ProcessBar").gameObject;
|
|
var fill = processBar.transform.Find("Fill").GetComponent<Image>();
|
|
var previousGaugeLine = processBar.transform.Find("PreviousGaugeLine").transform;
|
|
var reloadSlider = canvas.transform.Find("ReloadSlider").GetComponent<Slider>();
|
|
ProcessBar = new ProcessBar(processBar, fill, previousGaugeLine, reloadSlider);
|
|
ProcessBar.SetActiveReloadSlider(false);
|
|
|
|
ShipBoostSlider = canvas.transform.Find("ShipBoostSlider").GetComponent<Slider>();
|
|
ShipBoostSlider.value = 0f;
|
|
|
|
SpeedLines = canvas.transform.Find("SpeedLines").gameObject;
|
|
SpeedLines.SetActive(false);
|
|
|
|
itemsLoot = canvas.transform.Find("ItemsLoot");
|
|
}
|
|
|
|
private void Awake()
|
|
{
|
|
if (autoInit)
|
|
{
|
|
Init();
|
|
}
|
|
|
|
UiManager.Inst.OceanUi = this;
|
|
ProcessBar.SetActive(false);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (ProcessBar.Obj.activeSelf)
|
|
{
|
|
var mousePos = Input.mousePosition;
|
|
var result = mousePos + processBarOffset;
|
|
ProcessBar.SetPosition(result);
|
|
}
|
|
}
|
|
|
|
public void CreateItemLootUi(Vector3 lootPos, Sprite sprite = null)
|
|
{
|
|
var screenPos = CameraManager.Inst.MainCam.WorldToScreenPoint(lootPos);
|
|
var itemLootUi = Instantiate(ItemLootUi, screenPos, Quaternion.identity, itemsLoot);
|
|
itemLootUi.Init(lootPos);
|
|
}
|
|
|
|
public void SetActiveSpeedLine(bool value) => SpeedLines.SetActive(value);
|
|
}
|
|
} |