コード例 #1
0
        /// <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);
                }
            });