RectTransform, Texture2d 문제 발생
1. Texture2d 축소
코드:
/// <summary>
/// texture
/// </summary>
/// <param name="originTexture"></param>
/// <param name="rate"></param>
/// <returns></returns>
Texture2D CeateTexture_With_Scale(Texture2D originTexture, float rate)
{
if (rate >= 1f)
{
return originTexture;
}
int with = (int)(originTexture.width * rate);
int height = (int)(originTexture.height * rate);
int count = with * height;
Texture2D textrue = new Texture2D(with, height, TextureFormat.ARGB32, false);
Color32[] originColors = originTexture.GetPixels32();
Color32[] colors = new Color32[count];
float _1_rate = 1 / rate;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < with; x++)
{
int i = x + y * with;
int j = (int)(_1_rate * x) + (int)(_1_rate * y) * originTexture.width;
colors[i] = originColors[j];
}
}
textrue.SetPixels32(colors);
textrue.Apply();
return textrue;
}
2. RawImage UV의 크기를 조절하고 Texture를 사용하여 변형되지 않음
//[lzh]
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Test : MonoBehaviour
{
public RawImage rawImg;
public RectTransform rtRawImg;
private Texture texture;
// Use this for initialization
void Start ()
{
texture = rawImg.texture;
ScaleUV();
}
void ScaleUV()
{
Vector2 rtSize = rtRawImg.rect.size;
Vector2 texSize = new Vector2(texture.width, texture.height);
//Debug.Log(rtSize);
float rateRt = rtSize.y / rtSize.x;
float rateTex = texSize.y / texSize.x;
float temp = rateTex / rateRt;
Debug.Log(temp);
if(temp<1)
{
//rawImg.uvRect.x = 0.5f * (temp - 1);
rawImg.uvRect = new Rect(0.5f * (1-temp), 1f, temp, 1f);
}
else if(temp > 1)
{
temp = 1 / temp;
rawImg.uvRect = new Rect(1f, 0.5f * (1 - temp),1f, temp);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.