最先最先建立一个 GameEntry.cs 脚本
https://gameframework.cn/tutorial/tutorial-003/ 根据官方教程的建议去创建使用
GameFramework 预制体组件下有个 UI 子物体,默认 UIGroupHelper是DefaultUIGroupHelper,需新建一个继承 UIGroupHelperBase 脚本的项目配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| public class UGuiGroupHelper : UIGroupHelperBase { public const int DepthFactor = 10000; private Canvas m_Canvas = null; private int m_Depth = 0; private void Awake() { m_Canvas = gameObject.GetOrAddComponent<Canvas>(); gameObject.GetOrAddComponent<GraphicRaycaster>(); }
private void Start() { InitRectTransform(); InitCanvas(); InitCanvasScaler(); m_Canvas.sortingOrder = DepthFactor * m_Depth; }
private void InitRectTransform() { var rectTransform = GetComponent<RectTransform>(); rectTransform.anchorMin = Vector2.zero; rectTransform.anchorMax = Vector2.one; rectTransform.anchoredPosition = Vector2.zero; rectTransform.sizeDelta = Vector2.zero; } private void InitCanvas() { m_Canvas.renderMode = RenderMode.ScreenSpaceOverlay; } private void InitCanvasScaler() { var canvasScaler = gameObject.GetOrAddComponent<CanvasScaler>(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2(1920, 1080); canvasScaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight; canvasScaler.matchWidthOrHeight = 0.8f; }
public override void SetDepth(int depth) { m_Depth = depth; m_Canvas.overrideSorting = true; m_Canvas.sortingOrder = DepthFactor * depth; } }
|

OpenUI
GameEntry.UI.OpenUIForm("UI预制体路径(路径一定要包含 "Assets/")","UI预制体所属的UIGroup")
1 2 3 4 5
| var rectTransform = gameObject.transform as RectTransform; rectTransform.anchorMin = Vector2.zero; rectTransform.anchorMax = Vector2.one; rectTransform.anchoredPosition = Vector2.zero; rectTransform.sizeDelta = Vector2.zero;
|