当前位置:   article > 正文

Unity屏幕适配比例留黑边_unity 怎么跑上下黑边分辨率

unity 怎么跑上下黑边分辨率

本文是通过设置图片的RectTransform属性达到黑边遮挡效果。

在canvas下建立两个黑边物体并赋予想要的黑边图片。

canvas做如下设置

将我们的脚本挂载在canvas运行

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class 黑边 : MonoBehaviour
  5. {
  6. public float 宽;
  7. public float 高;
  8. public float 宽高比;
  9. public float 规定宽高比;
  10. public RectTransform []rect;//黑边
  11. // Start is called before the first frame update
  12. void Start()
  13. {
  14. 规定宽高比 = 1920f / 1080f;
  15. rect = GetComponentsInChildren<RectTransform>();
  16. }
  17. // Update is called once per frame
  18. void Update()
  19. {
  20. 宽 = Screen.width;
  21. 高 = Screen.height;//获取屏幕宽高信息
  22. 宽高比 = 宽 / 高;
  23. if (宽高比 >= 规定宽高比)
  24. {
  25. 左右黑边();
  26. }
  27. if (宽高比 < 规定宽高比)
  28. {
  29. 上下黑边();
  30. }
  31. }
  32. public void 左右黑边()
  33. {
  34. rect[2].anchorMax = new Vector2(0, 0.5f);//锚点
  35. rect[2].anchorMin = new Vector2(0, 0.5f);//锚点
  36. rect[2].anchoredPosition = new Vector2(0, 0);//位置
  37. rect[2].pivot = new Vector2(0f, 0.5f);//轴心
  38. rect[2].sizeDelta = new Vector2(((宽高比* rect[0].sizeDelta.y) - rect[0].sizeDelta.y * 规定宽高比) / 2, rect[0].sizeDelta.y);
  39. rect[1].anchorMax = new Vector2(1, 0.5f);
  40. rect[1].anchorMin = new Vector2(1, 0.5f);
  41. rect[1].anchoredPosition = new Vector2(0, 0);
  42. rect[1].pivot = new Vector2(1f, 0.5f);
  43. rect[1].sizeDelta = new Vector2(((宽高比 * rect[0].sizeDelta.y) - rect[0].sizeDelta.y * 规定宽高比) / 2, rect[0].sizeDelta.y);
  44. }
  45. public void 上下黑边()
  46. {
  47. rect[2].anchorMax = new Vector2(0.5f, 1f);//锚点
  48. rect[2].anchorMin = new Vector2(0.5f, 1f);//锚点
  49. rect[2].anchoredPosition = new Vector2(0, 0);//位置
  50. rect[2].pivot = new Vector2(0.5f, 1f);//轴心
  51. rect[2].sizeDelta = new Vector2(rect[0].sizeDelta.x, ((rect[0].sizeDelta.x/ 宽高比) - rect[0].sizeDelta.x / 规定宽高比) / 2);
  52. rect[1].anchorMax = new Vector2(0.5f, 0);
  53. rect[1].anchorMin = new Vector2(0.5f, 0);
  54. rect[1].anchoredPosition = new Vector2(0, 0);
  55. rect[1].pivot = new Vector2(0.5f, 0);
  56. rect[1].sizeDelta = new Vector2(rect[0].sizeDelta.x, ((rect[0].sizeDelta.x / 宽高比) - rect[0].sizeDelta.x / 规定宽高比) / 2);
  57. }
  58. }

运行后不同分辨率下效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/546133
推荐阅读
相关标签
  

闽ICP备14008679号