From 4722df04fd6da6c36d37186c26e3431cfc1e9b20 Mon Sep 17 00:00:00 2001 From: Eicy Date: Wed, 10 Jul 2024 17:01:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ScreenAspect/README.md | 2 ++ ScreenAspect/ScreenAspect.cs | 44 ++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 ScreenAspect/README.md create mode 100644 ScreenAspect/ScreenAspect.cs diff --git a/ScreenAspect/README.md b/ScreenAspect/README.md new file mode 100644 index 0000000..dacd6b4 --- /dev/null +++ b/ScreenAspect/README.md @@ -0,0 +1,2 @@ +public float TargetAspect = 16f / 9f; +修改以上数值即可设置相机比例。 \ No newline at end of file diff --git a/ScreenAspect/ScreenAspect.cs b/ScreenAspect/ScreenAspect.cs new file mode 100644 index 0000000..e65ed5c --- /dev/null +++ b/ScreenAspect/ScreenAspect.cs @@ -0,0 +1,44 @@ +using UnityEngine; + +namespace AnnoyingUtils.ScreenAspect +{ + public class ScreenAspect : MonoBehaviour + { + //目标比例,默认16:9 + public float TargetAspect = 16f / 9f; + private Camera _mainCamera; + + private void Awake() + { + _mainCamera = Camera.main; + var windowAspect = Screen.width / (float)Screen.height; + + var scaleHeight = windowAspect / TargetAspect; + + if (scaleHeight < 1f) + { + var rect = _mainCamera.rect; + + rect.width = 1f; + rect.height = scaleHeight; + rect.x = 0; + rect.y = (1f - scaleHeight) / 2f; + + _mainCamera.rect = rect; + } + else + { + var scaleWidth = 1f / scaleHeight; + + var rect = _mainCamera.rect; + + rect.width = scaleWidth; + rect.height = 1f; + rect.x = (1f - scaleWidth) / 2f; + rect.y = 0; + + _mainCamera.rect = rect; + } + } + } +} \ No newline at end of file