/// <summary> /// 生成UI代码 /// </summary> /// <param name="prefab"></param> /// <param name="uiPath"></param> /// <param name="uiRootPath"></param> /// <param name="codeRootPath"></param> /// <param name="template"></param> /// <returns></returns> public static string GenerateUICode(GameObject prefab, string uiPath, string guid, UICodeParam param) { if (!uiPath.Contains(param.uiRootPath)) { Debug.LogError($"UI {uiPath} 不在根目录{param.uiRootPath}下"); return(string.Empty); } if (!Directory.Exists(param.codeRootPath)) { Debug.LogError($"代码根目录{param.codeRootPath}不存在"); return(string.Empty); } var address = AddressableAssetSettingsDefaultObject.Settings.FindAssetEntry(guid).address; StringBuilder members = new StringBuilder(); StringBuilder ctors = new StringBuilder(); TraversePrefabNode(prefab.transform, string.Empty, (com, relatedPath) => { Encode(com, relatedPath, out string memberCode, out string ctorCode); if (!string.IsNullOrEmpty(memberCode)) { members.AppendLine(memberCode); } if (!string.IsNullOrEmpty(ctorCode)) { ctors.AppendLine(ctorCode); } });