CanvasScaler计算方法

计算缩放

protected virtual void HandleScaleWithScreenSize()
{
Vector2 screenSize = m_Canvas.get_renderingDisplaySize();
int displayIndex = m_Canvas.get_targetDisplay();
if (displayIndex > 0 && displayIndex < Display.displays.Length)
{
Display disp = Display.displays[displayIndex];
((Vector2)(ref screenSize))…ctor((float)disp.get_renderingWidth(), (float)disp.get_renderingHeight());
}
float scaleFactor = 0f;
switch (m_ScreenMatchMode)
{
case ScreenMatchMode.MatchWidthOrHeight:
{
float logWidth = Mathf.Log(screenSize.x / m_ReferenceResolution.x, 2f);
float logHeight = Mathf.Log(screenSize.y / m_ReferenceResolution.y, 2f);
float logWeightedAverage = Mathf.Lerp(logWidth, logHeight, m_MatchWidthOrHeight);
scaleFactor = Mathf.Pow(2f, logWeightedAverage);
break;
}
case ScreenMatchMode.Expand:
scaleFactor = Mathf.Min(screenSize.x / m_ReferenceResolution.x, screenSize.y / m_ReferenceResolution.y);
break;
case ScreenMatchMode.Shrink:
scaleFactor = Mathf.Max(screenSize.x / m_ReferenceResolution.x, screenSize.y / m_ReferenceResolution.y);
break;
}
SetScaleFactor(scaleFactor);
SetReferencePixelsPerUnit(m_ReferencePixelsPerUnit);
}

猜你喜欢

转载自blog.csdn.net/u010778229/article/details/127883758