| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using UnityEngine;
- using UnityEngine.UI;
- namespace JC.Unity.UI {
- public class AdapterUtils
- {
- public static void MakeRectTransformFullScreen(MonoBehaviour mono) {
- RectTransform rtf = mono.GetComponent<RectTransform>();
- rtf.anchorMin = Vector2.zero;
- rtf.anchorMax = new Vector2(1, 1);
- rtf.offsetMin = Vector2.zero;
- rtf.offsetMax = Vector2.zero;
- }
- }
- public class RectTransformUtils
- {
- public static Vector3 CanvasV3ToScreenV3(Vector3 vector3, RectTransform rectTransform) {
- Vector2 canvasSize = rectTransform.GetComponentInParent<CanvasScaler>().GetComponent<RectTransform>().sizeDelta;
- vector3.y *= Screen.height / canvasSize.y;
- vector3.x *= Screen.width / canvasSize.x;
- return vector3;
- }
- public static Vector3 ScreenV3ToCanvasV3(Vector3 vector3, RectTransform rectTransform) {
- Vector2 canvasSize = rectTransform.GetComponentInParent<CanvasScaler>().GetComponent<RectTransform>().sizeDelta;
- vector3.y *= canvasSize.y / Screen.height;
- vector3.x *= canvasSize.x / Screen.width;
- return vector3;
- }
- public static Vector3 GetPositionByPivot(RectTransform rectTransform, Vector2 pivot) {
- Vector2 sizeInScreen = CanvasV3ToScreenV3(rectTransform.rect.size, rectTransform);
- Vector2 deltaPivot = pivot - rectTransform.pivot;
- Vector3 deltaPos = sizeInScreen * deltaPivot;
- return rectTransform.position + deltaPos;
- }
- }
- public class CanvasUtils
- {
- public static void PlusSortOrder(GameObject src, GameObject des, int plusValue) {
- des.GetComponent<Canvas>().sortingOrder = src.GetComponent<Canvas>().sortingOrder + plusValue;
- }
- }
- [ExecuteAlways]
- public class BackgroundAdapter : MonoBehaviour
- {
- private CanvasScaler _scaler;
- void Start()
- {
- UpdateScale();
- }
- #if UNITY_EDITOR
- void Update()
- {
- UpdateScale();
- }
- #endif
- void UpdateScale()
- {
- if (_scaler == null) _scaler = GetComponentInParent<CanvasScaler>();
- if (_scaler == null) return;
- var resolution = _scaler.referenceResolution;
- var rt = _scaler.transform as RectTransform;
- if (rt == null) return;
- var screenSize = rt.sizeDelta;
- var factor = Mathf.Max(screenSize.x / resolution.x, screenSize.y / resolution.y);
- var scale = Vector3.one * factor;
- transform.localScale = scale;
- }
- }
- }
|