using UnityEngine; using UnityEngine.UI; namespace JCUnityLib.UI { [ExecuteAlways] [RequireComponent(typeof(Image))] public class VernierCaliper : MonoBehaviour { const string _SHADER_NAME = "JC/UI/VernierCaliper"; RectTransform _rectTransform; Image _image; public float lineWidth = 5; public float lineSpace = 10; public float lineHeight = 50; public Color lineColor = Color.black; void Update() { if (!_rectTransform) _rectTransform = GetComponent(); if (!_image) _image = GetComponent(); if (_image.material == null || _image.material.shader.name != _SHADER_NAME) _image.material = new Material(Shader.Find(_SHADER_NAME)); Material imageMaterial = _image.material; if (!imageMaterial) return; imageMaterial.SetFloat("_rectWidth", _rectTransform.rect.width); imageMaterial.SetFloat("_rectHeight", _rectTransform.rect.height); imageMaterial.SetFloat("_LineWidth", lineWidth); imageMaterial.SetFloat("_LineSpace", lineSpace); imageMaterial.SetFloat("_LineHeight", lineHeight); imageMaterial.SetColor("_LineColor", lineColor); } } }