12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System;
- using UnityEngine;
- using UnityEngine.UI;
- namespace SRF.UI
- {
- [AddComponentMenu("SRF/UI/Retina Scaler")]
- [RequireComponent(typeof(CanvasScaler))]
- public class SRRetinaScaler : SRMonoBehaviour
- {
- public int ThresholdDpi
- {
- get
- {
- return this._thresholdDpi;
- }
- }
- public float RetinaScale
- {
- get
- {
- return this._retinaScale;
- }
- }
- private void Start()
- {
- float dpi = Screen.dpi;
- if (dpi <= 0f)
- {
- return;
- }
- if (dpi > (float)this.ThresholdDpi)
- {
- CanvasScaler component = base.GetComponent<CanvasScaler>();
- component.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
- component.scaleFactor = this.RetinaScale;
- if (this._disablePixelPerfect)
- {
- base.GetComponent<Canvas>().pixelPerfect = false;
- }
- }
- }
- [SerializeField]
- private float _retinaScale = 2f;
- [SerializeField]
- private int _thresholdDpi = 250;
- [SerializeField]
- private bool _disablePixelPerfect;
- }
- }
|