using System; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.UI; // ReSharper disable once CheckNamespace namespace BlueWaterProject { [Serializable] public class ProcessBar { [field: SerializeField] public GameObject Obj { get; set; } [field: SerializeField] public Image Fill { get; set; } [field: SerializeField] public Transform PreviousGaugeLine { get; set; } public ProcessBar(GameObject obj, Image fill, Transform previousGaugeLine) { Obj = obj; Fill = fill; PreviousGaugeLine = previousGaugeLine; SetFillAmount(0f); } public void SetActive(bool value) => Obj.SetActive(value); public void SetPosition(Vector3 value) => Obj.transform.position = value; public void SetFillAmount(float value) => Fill.fillAmount = value; public void SetRotateZ(float value) => PreviousGaugeLine.rotation = Quaternion.Euler(0f, 0f, value); } public class OceanUi : MonoBehaviour { [field: SerializeField] public ProcessBar ProcessBar { get; set; } [field: SerializeField] public Image CannonFill { get; set; } private Canvas canvas; private void Awake() { UiManager.Inst.OceanUi = this; ProcessBar.SetActive(false); } private void Update() { if (ProcessBar.Obj.activeSelf) { var mousePos = Input.mousePosition; ProcessBar.SetPosition(mousePos); } } [Button("셋팅 초기화")] private void Init() { canvas = GetComponent(); if (!canvas) { Debug.LogError("canvas is null error"); return; } var processBar = canvas.transform.Find("ProcessBar").gameObject; var fill = processBar.transform.Find("Fill").GetComponent(); var previousGaugeLine = processBar.transform.Find("PreviousGaugeLine").transform; ProcessBar = new ProcessBar(processBar, fill, previousGaugeLine); } } }