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