44 lines
1.1 KiB
C#
44 lines
1.1 KiB
C#
using UnityEngine;
|
||
|
||
namespace Camera
|
||
{
|
||
public class ScreenAspect : MonoBehaviour
|
||
{
|
||
//目标比例,默认16:9
|
||
public float TargetAspect = 16f / 9f;
|
||
private UnityEngine.Camera _mainCamera;
|
||
|
||
private void Awake()
|
||
{
|
||
_mainCamera = UnityEngine.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;
|
||
}
|
||
}
|
||
}
|
||
} |