OldBlueWater/BlueWater/Assets/02.Scripts/OceanUi.cs
NTG_Lenovo 22de879e35 #78 대포 쏘기 만드는 중
+ cannon 연결 및 발사
+ UI 추가 중
+ 캐논 재장전 기능
2023-12-15 16:19:02 +09:00

69 lines
2.1 KiB
C#

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<Canvas>();
if (!canvas)
{
Debug.LogError("canvas is null error");
return;
}
var processBar = canvas.transform.Find("ProcessBar").gameObject;
var fill = processBar.transform.Find("Fill").GetComponent<Image>();
var previousGaugeLine = processBar.transform.Find("PreviousGaugeLine").transform;
ProcessBar = new ProcessBar(processBar, fill, previousGaugeLine);
}
}
}