From 06dad5a68a43bc4e8a0c9a694ac0119461ea8216 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Wed, 19 Jul 2023 17:33:28 +0800 Subject: [PATCH] Update UIWidget.cs --- .../Runtime/GameFramework/UI/UIWidget.cs | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/Assets/TEngine/Runtime/GameFramework/UI/UIWidget.cs b/Assets/TEngine/Runtime/GameFramework/UI/UIWidget.cs index ba76d035..61925e7e 100644 --- a/Assets/TEngine/Runtime/GameFramework/UI/UIWidget.cs +++ b/Assets/TEngine/Runtime/GameFramework/UI/UIWidget.cs @@ -132,6 +132,30 @@ namespace TEngine return CreateImp(parentUI, widgetRoot, false, visible); } + /// + /// 根据资源名创建 + /// + /// + /// + /// + /// + /// + public bool CreateByPath(string resPath, UIBase parentUI, Transform parentTrans = null, bool visible = true) + { + GameObject goInst = parentUI.AssetReference.LoadAsset(resPath, parentTrans); + if (goInst == null) + { + return false; + } + if (!Create(parentUI, goInst, visible)) + { + return false; + } + goInst.transform.localScale = Vector3.one; + goInst.transform.localPosition = Vector3.zero; + return true; + } + /// /// 根据prefab或者模版来创建新的 widget。 /// @@ -155,7 +179,10 @@ namespace TEngine { return false; } - AssetReference = AssetReference.BindAssetReference(widgetRoot,parent:parentUI.AssetReference); + if (AssetReference == null) + { + AssetReference = AssetReference.BindAssetReference(widgetRoot,parent:parentUI.AssetReference); + } RestChildCanvas(parentUI); parent = parentUI; Parent.ListChild.Add(this); @@ -178,20 +205,23 @@ namespace TEngine { return false; } - gameObject = go; rectTransform = go.GetComponent(); + gameObject = go; Log.Assert(rectTransform != null, $"{go.name} ui base element need to be RectTransform"); return true; } protected void RestChildCanvas(UIBase parentUI) { + if (parentUI == null || parentUI.gameObject == null) + { + return; + } Canvas parentCanvas = parentUI.gameObject.GetComponentInParent(); if (parentCanvas == null) { return; } - if (gameObject != null) { var listCanvas = gameObject.GetComponentsInChildren(true);