| 12345678910111213141516171819202122232425262728293031323334 |
- 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<RectTransform>();
- if (!_image) _image = GetComponent<Image>();
- 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);
- }
- }
- }
|