DynamicCrosshair.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace HQFPSWeapons.UserInterface
  4. {
  5. /// <summary>
  6. ///
  7. /// </summary>
  8. public class DynamicCrosshair : MonoBehaviour
  9. {
  10. public float Distance { get { return m_Distance; } }
  11. [SerializeField]
  12. [Clamp(0f, 256f)]
  13. private float m_Distance = 32f;
  14. [Header("Crosshair Parts")]
  15. [SerializeField]
  16. private Image m_Left = null;
  17. [SerializeField]
  18. private Image m_Right = null;
  19. [SerializeField]
  20. private Image m_Down = null;
  21. [SerializeField]
  22. private Image m_Up = null;
  23. public void SetActive(bool active)
  24. {
  25. m_Left.enabled = m_Right.enabled = m_Down.enabled = m_Up.enabled = active;
  26. }
  27. public void SetDistance(float distance)
  28. {
  29. m_Left.rectTransform.anchoredPosition = new Vector2(-distance, 0f);
  30. m_Right.rectTransform.anchoredPosition = new Vector2(distance, 0f);
  31. m_Down.rectTransform.anchoredPosition = new Vector2(0f, -distance);
  32. m_Up.rectTransform.anchoredPosition = new Vector2(0f, distance);
  33. m_Distance = distance;
  34. }
  35. public void SetColor(Color color)
  36. {
  37. m_Left.color = m_Right.color = m_Down.color = m_Up.color = color;
  38. }
  39. private void OnValidate()
  40. {
  41. if(!Application.isPlaying)
  42. SetDistance(m_Distance);
  43. }
  44. }
  45. }