1
This commit is contained in:
66
Src/Unity/Scripts/UX/UGUI/UGUIBackgroundImageScaler.cs
Normal file
66
Src/Unity/Scripts/UX/UGUI/UGUIBackgroundImageScaler.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BITKit.UX
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Created by Vitens on 2020/12/11 20:48:35
|
||||
///
|
||||
/// Description :
|
||||
/// 全屏背景图片等比例拉伸自适应
|
||||
/// </summary>
|
||||
[ExecuteInEditMode]
|
||||
public class UGUIBackgroundImageScaler : MonoBehaviour
|
||||
{
|
||||
//图片原大小(压缩前的)
|
||||
[SerializeField] private Vector2 textureOriginSize = new Vector2(2048, 1024);
|
||||
|
||||
// Start is called before the first frame update
|
||||
private void Start()
|
||||
{
|
||||
Scaler();
|
||||
}
|
||||
|
||||
//适配
|
||||
private void Scaler()
|
||||
{
|
||||
//当前画布尺寸
|
||||
Vector2 canvasSize = gameObject.GetComponentInParent<Canvas>().GetComponent<RectTransform>().sizeDelta;
|
||||
//当前画布尺寸长宽比
|
||||
float screenxyRate = canvasSize.x / canvasSize.y;
|
||||
|
||||
//图片尺寸 这个得到的结果是 (0,0) ?
|
||||
//Vector2 bgSize = bg.mainTexture.texelSize;
|
||||
Vector2 bgSize = textureOriginSize;
|
||||
//视频尺寸长宽比
|
||||
float texturexyRate = bgSize.x / bgSize.y;
|
||||
|
||||
RectTransform rt = (RectTransform)transform;
|
||||
//视频x偏长,需要适配y(下面的判断 '>' 改为 '<' 就是视频播放器的视频方式)
|
||||
if (texturexyRate > screenxyRate)
|
||||
{
|
||||
int newSizeY = Mathf.CeilToInt(canvasSize.y);
|
||||
int newSizeX = Mathf.CeilToInt((float)newSizeY / bgSize.y * bgSize.x);
|
||||
rt.sizeDelta = new Vector2(newSizeX, newSizeY);
|
||||
}
|
||||
else
|
||||
{
|
||||
int newVideoSizeX = Mathf.CeilToInt(canvasSize.x);
|
||||
int newVideoSizeY = Mathf.CeilToInt((float)newVideoSizeX / bgSize.x * bgSize.y);
|
||||
rt.sizeDelta = new Vector2(newVideoSizeX, newVideoSizeY);
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
//editor模式下测试用
|
||||
Scaler();
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
}
|
11
Src/Unity/Scripts/UX/UGUI/UGUIBackgroundImageScaler.cs.meta
Normal file
11
Src/Unity/Scripts/UX/UGUI/UGUIBackgroundImageScaler.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2dd66ca168ee78548af1d15e74743133
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user