ccl4/blueberryPeak/Assets/Scripts/Pixelation/SetRenderTextureSize.cs
2025-06-10 16:13:48 +02:00

56 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class SetRenderTextureSize : MonoBehaviour
{
[SerializeField]
[Range(100, 800)]
private int resolutionWidth;
private int oldResolutionWidth;
private int oldScreenWidth;
private int oldScreenHeight;
[SerializeField]
private RawImage renderImage;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
RecalculateTexture();
}
void Update()
{
if (resolutionWidth != oldResolutionWidth || Screen.width != oldScreenWidth || Screen.height != oldScreenHeight)
{
RecalculateTexture();
}
}
private void RecalculateTexture()
{
Camera camera = gameObject.GetComponent<Camera>();
if (camera.targetTexture != null) {
camera.targetTexture.Release();
}
float aspectRatio = (float)Screen.width / Screen.height;
int resolutionHeight = Mathf.RoundToInt(resolutionWidth / aspectRatio);
if (resolutionHeight < 1)
{
resolutionHeight = 1;
}
camera.targetTexture = new RenderTexture( resolutionWidth, resolutionHeight, 24 );
camera.targetTexture.filterMode = FilterMode.Point;
camera.targetTexture.wrapMode = TextureWrapMode.Clamp;
renderImage.texture = camera.targetTexture;
renderImage.color = new Color(renderImage.color.r, renderImage.color.g, renderImage.color.b, 255);
oldResolutionWidth = resolutionWidth;
oldScreenWidth = Screen.width;
oldScreenHeight = Screen.height;
}
}