ScreenAdapt.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class ScreenAdapt : MonoBehaviour
  6. {
  7. public Camera cam;
  8. public CanvasScaler scaler;
  9. public void AdaptScreen()
  10. {
  11. if (Application.isEditor)
  12. {
  13. return;
  14. }
  15. AdaptScreen(Screen.width, Screen.height);
  16. //AdaptScreen(1900, 900);
  17. }
  18. public void AdaptScreen(float sceenWidth, float screenHeight)
  19. {
  20. float refeRatio = scaler.referenceResolution.y/scaler.referenceResolution.x;
  21. float deviceRatio = screenHeight/sceenWidth;
  22. if (refeRatio < deviceRatio)
  23. {
  24. Rect rect = new Rect();
  25. rect.width = 1;
  26. rect.x = 0;
  27. rect.height = refeRatio/deviceRatio;
  28. rect.y = (1 - rect.height)/2;
  29. cam.rect = rect;
  30. scaler.matchWidthOrHeight = 0;
  31. }
  32. else if (refeRatio > deviceRatio)
  33. {
  34. Rect rect = new Rect();
  35. refeRatio = scaler.referenceResolution.x/scaler.referenceResolution.y;
  36. deviceRatio = sceenWidth/screenHeight;
  37. rect.width = refeRatio/deviceRatio;
  38. rect.x = (1 - rect.width)/2;
  39. rect.height = 1;
  40. rect.y = 0;
  41. cam.rect = rect;
  42. scaler.matchWidthOrHeight = 1;
  43. }
  44. }
  45. }