Exemplo n.º 1
0
        private static void ChargeInfoInternal(object component, AssemblerStateMechine mechine, string key, string pair_value)
        {
            var instence = component;
            var member   = TypeUtil.GetDeepMember(ref instence, key);

            if (member != null)
            {
                if (member is FieldInfo)
                {
                    var info  = (member as FieldInfo);
                    var value = GetValueFromTypeString(info.FieldType, pair_value, mechine);
                    if (value != null)
                    {
                        info.SetValue(instence, value);
                    }
                }
                else if (member is PropertyInfo)
                {
                    var info  = (member as PropertyInfo);
                    var value = GetValueFromTypeString(info.PropertyType, pair_value, mechine);
                    if (value != null)
                    {
                        info.SetValue(instence, value, null);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public static UINode CreateRootNode(this AssemblerStateMechine mechine, LayerInfo layerInfo, Rect customRect)
        {
            var path         = layerInfo.path;
            var instenceName = NameFromPath(path);
            var go           = new GameObject(instenceName, typeof(RectTransform));

            go.layer = LayerMask.NameToLayer("UI");
            go.transform.SetParent(mechine.canvas.transform, false);
            var uiRect = ParamAnalysisTool.PsRectToUnityRect(mechine.uiSize, customRect);

            SetRectTransform(uiRect, go.transform as RectTransform);
            UINode node = new UINode(go.transform, layerInfo);

            node.layerInfo = layerInfo;
            return(node);
        }
Exemplo n.º 3
0
        public static GameObject GenerateUI(string spriteFolderPath, Canvas canvas, Dictionary <string, Type> layerImportTypes, UIInfo uiInfo)
        {
            if (layerImportTypes == null)
            {
                return(null);
            }
            mechine = new AssemblerStateMechine();
            mechine.spriteFolderPath   = spriteFolderPath;
            mechine.uiSize             = PreferHelper.uiSize;
            mechine.canvas             = canvas;
            mechine.fontFolderPath     = PreferHelper.fontFolderPath;
            mechine.textureFolderPath  = PreferHelper.textureFolderPath;
            mechine.materialFolderPath = PreferHelper.materialFolderPath;
            mechine.RegistEmptyImprot(Activator.CreateInstance(emptyImporter) as ILayerImport);
            using (var enumerator = layerImportTypes.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.Current;
                    if (typeof(ILayerImport).IsAssignableFrom(current.Value))
                    {
                        var instence = Activator.CreateInstance(current.Value) as ILayerImport;
                        if (instence != null)
                        {
                            mechine.RegistLayerimport(current.Key, instence);
                        }
                    }
                }
            }
            if (mechine.canvas != null)
            {
                Screen.SetResolution(PreferHelper.uiSize.x, PreferHelper.uiSize.y, false);
#if UNITY_EDITOR
                var ok = CheckGameViewSize(PreferHelper.uiSize);
                if (!ok)
                {
                    var @continue = UnityEditor.EditorUtility.DisplayDialog("屏幕比例和配制不一致:" + PreferHelper.uiSize.ToString(), "继续生成会造成坐标不正确", "继续", "取消");
                    if (!@continue)
                    {
                        return(null);
                    }
                }
#endif
                return(mechine.GenerateUI(uiInfo));
            }
            return(null);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 装载入信息
        /// </summary>
        /// <param name="component"></param>
        /// <param name="resourceDic"></param>
        public static void ChargeInfo(this AssemblerStateMechine mechine, Component component, ResourceDic resourceDic)
        {
            component.gameObject.SetActive(resourceDic.active);

            if (!resourceDic.active)
            {
                return;
            }

            using (var enumerator = resourceDic.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var pair = enumerator.Current;
                    ChargeInfoInternal(component, mechine, pair.Key, pair.Value);
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 加载Image/Text/Label
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="layerInfo"></param>
        public static void LoadCommonResources(AssemblerStateMechine mechine, UINode node, Rect baseRect)
        {
            Transform parent    = node.transform;
            LayerInfo layerInfo = node.layerInfo;

            if (layerInfo.sub_images != null)
            {
                for (int i = 0; i < layerInfo.sub_images.Count; i++)
                {
                    var current = layerInfo.sub_images[i];
                    var image   = new GameObject("Image", typeof(RectTransform), typeof(Image)).GetComponent <Image>();
                    image.transform.SetParent(parent, false);
                    mechine.ChargeInfo(image, current);
                    image.rectTransform.SetRectFromResource(layerInfo.rect, baseRect, current);
                }
            }

            if (layerInfo.sub_texts != null)
            {
                for (int i = 0; i < layerInfo.sub_texts.Count; i++)
                {
                    var current = layerInfo.sub_texts[i];
                    var title   = LayerImportUtil.MakeTitleComponenet("Title", parent);
                    title.resizeTextForBestFit = true;//缩放时会看不到?
                    mechine.ChargeInfo(title, current);
                    title.rectTransform.SetRectFromResource(layerInfo.rect, baseRect, current);
                }
            }

            if (layerInfo.sub_rawImages != null)
            {
                for (int i = 0; i < layerInfo.sub_rawImages.Count; i++)
                {
                    var current  = layerInfo.sub_rawImages[i];
                    var rawImage = new GameObject("RawImage", typeof(RectTransform), typeof(RawImage)).GetComponent <RawImage>();
                    rawImage.transform.SetParent(parent, false);
                    mechine.ChargeInfo(rawImage, current);
                    rawImage.rectTransform.SetRectFromResource(layerInfo.rect, baseRect, current);
                }
            }
        }
Exemplo n.º 6
0
 public static object GetValueFromTypeString(Type type, string value, AssemblerStateMechine mechine)
 {
     if (type == typeof(SpriteState))
     {
         return(ParamAnalysisTool.StringToSpriteState(value, mechine.spriteFolderPath));
     }
     else if (type == typeof(ColorBlock))
     {
         return(ParamAnalysisTool.StringToColorBlock(value));
     }
     else if (type == typeof(Sprite))
     {
         return(ParamAnalysisTool.StringToObject <Sprite>(value, mechine.spriteFolderPath));
     }
     else if (type == typeof(Font))
     {
         return(ParamAnalysisTool.StringToObject <Font>(value, mechine.fontFolderPath));
     }
     else if (type == typeof(Material))
     {
         return(ParamAnalysisTool.StringToObject <Material>(value, mechine.materialFolderPath));
     }
     else if (type == typeof(Texture))
     {
         return(ParamAnalysisTool.StringToObject <Texture>(value, mechine.textureFolderPath));
     }
     else if (type == typeof(Texture2D))
     {
         return(ParamAnalysisTool.StringToObject <Texture2D>(value, mechine.textureFolderPath));
     }
     else if (type == typeof(Color))
     {
         return(ParamAnalysisTool.StringToColor(value));
     }
     else if (type == typeof(Vector2))
     {
         return(ParamAnalysisTool.StringToVector2(value));
     }
     else if (type == typeof(Vector3))
     {
         return(ParamAnalysisTool.StringToVector3(value));
     }
     else if (type == typeof(Vector4))
     {
         return(ParamAnalysisTool.StringToVector4(value));
     }
     else if (type == typeof(Rect))
     {
         return(ParamAnalysisTool.StringToRect(value));
     }
     else if (typeof(IConvertible).IsAssignableFrom(type))
     {
         if (type.IsSubclassOf(typeof(System.Enum)))
         {
             return(Enum.Parse(type, value));
         }
         else
         {
             try
             {
                 return(Convert.ChangeType(value, type));
             }
             catch (Exception e)
             {
                 Debug.LogWarning(e.Message + ":" + value);
             }
         }
     }
     Debug.LogWarningFormat("未成功解析类型为{0}的信息", type.FullName);
     return(null);
 }
Exemplo n.º 7
0
 public static void LoadCommonResources(AssemblerStateMechine mechine, UINode node)
 {
     LoadCommonResources(mechine, node, node.layerInfo.rect);
 }