chore: 角色展示修复高分辨率屏幕UI错位

This commit is contained in:
m0_75251201
2025-11-19 21:40:12 +08:00
parent f80e166574
commit 48f391cd2a
20 changed files with 213 additions and 204 deletions

View File

@@ -24,6 +24,11 @@ namespace CharacterPreview
private bool canEdit = false;
private void Awake()
{
}
private void Start()
{
SetRectTransform();
SetText();
@@ -130,19 +135,23 @@ namespace CharacterPreview
rectTransform = gameObject.AddComponent<RectTransform>();
}
if (!rectTransform.parent || rectTransform.parent.name != "Canvas")
if (!rectTransform.parent)
{
var defaultCanvas = GameObject.Find("Canvas");
if (!defaultCanvas)
{
defaultCanvas = new GameObject("ControlModelMoveCanvas");
var canvas = defaultCanvas.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay; // 设置渲染模式为屏幕空间覆盖
defaultCanvas.AddComponent<CanvasScaler>();
defaultCanvas.AddComponent<GraphicRaycaster>();
canvasRectTransform = defaultCanvas.transform;
}
var defaultCanvas = new GameObject("ControlModelMoveCanvas");
defaultCanvas.layer = LayerMask.NameToLayer("UI");
var canvas = defaultCanvas.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvas.sortingOrder = -100;
var canvasScaler = defaultCanvas.AddComponent<CanvasScaler>();
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
canvasScaler.referenceResolution = new Vector2(1600, 900);
canvasScaler.matchWidthOrHeight = 1f;
defaultCanvas.AddComponent<GraphicRaycaster>();
canvasRectTransform = defaultCanvas.GetComponent<RectTransform>();
canvasRectTransform.SetParent(null, false);
canvasRectTransform.SetAsFirstSibling();
rectTransform.SetParent(defaultCanvas.transform);
}
@@ -165,7 +174,7 @@ namespace CharacterPreview
buttonRect.anchorMin=Vector2.right;
buttonRect.pivot = Vector2.right;
buttonRect.sizeDelta=new Vector2(80f,30f);
buttonRect.anchoredPosition = new Vector2(-200, 100);
buttonRect.anchoredPosition = new Vector2(-80, 5);
var button = buttonObj.AddComponent<Button>();