Example #1
0
        public ISerializerable NotityElementCreate(GObject el)
        {
            MethodInfo m;

            if (_methodes.TryGetValue(el.GetType(), out m))
            {
                return(m.Invoke(this, new object[] { el }) as ISerializerable);
            }
            else
            {
                throw new Exception("Can't Create :" + el.GetType());
            }
        }
        Editor GetEditor(GObject target)
        {
            var    type = target.GetType();
            Editor editor;

            if (!assetEditors.TryGetValue(type, out editor) || editor.target != target)
            {
                editor             = CreateEditor(target);
                assetEditors[type] = editor;
            }
            return(editor);
        }
Example #3
0
 static void CollectUIElements(string dlg, GComponent comp, Info info)
 {
     GObject[] children = comp.GetChildren();
     for (int i = 0; i < children.Length; i++)
     {
         GObject child   = children[i];
         string  name    = child.name;
         int     pos     = name.IndexOf('_');
         bool    isGroup = false;
         if (pos > 1)
         {
             string prefix = name.Substring(0, pos);
             if (prefixs.ContainsKey(prefix))
             {
                 int typev = prefixs[prefix];
                 isGroup = typev == 2;
                 Type      type     = child.GetType();
                 var       property = type.GetProperty(prefix);
                 FieldInfo field    = new FieldInfo();
                 field.Name = name;
                 string cType = child.GetType().ToString();
                 field.Type = cType;
                 string nType = "FairyGUI.G" + prefix;
                 if (cType != nType)
                 {
                     Debug.LogErrorFormat("[{0}]{1}的类型({2})与实际需求({3})不匹配",
                                          dlg, name, cType, nType);
                 }
                 info.Fields.Add(field);
             }
         }
         if (!isGroup && child.asCom != null && child.asCom.numChildren > 0)
         {
             CollectUIElements(dlg + 1, child.asCom, info);
         }
         child.Dispose();
     }
     comp.Dispose();
 }
Example #4
0
    public static GComponent ToCom(GObject obj)
    {
        if (obj == null)
        {
            return(null);
        }

        GComponent comp = null;

        if (obj.GetType() == typeof(GLoader))
        {
            GLoader loader = obj as GLoader;
            comp = loader.component;
        }
        else
        {
            comp = obj.asCom;
        }
        return(comp);
    }
Example #5
0
        public override void OnInspectorGUI()
        {
            DisplayObject obj = (target as DisplayObjectInfo).displayObject;

            EditorGUILayout.LabelField(obj.GetType().Name + ": " + obj.id, (GUIStyle)"OL Title");
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            string name = EditorGUILayout.TextField("Name", obj.name);

            if (EditorGUI.EndChangeCheck())
            {
                obj.name = name;
            }
            if (obj is FairyGUI.Container)
            {
                EditorGUI.BeginChangeCheck();
                bool fairyBatching = EditorGUILayout.Toggle("FairyBatching", ((FairyGUI.Container)obj).fairyBatching);
                if (EditorGUI.EndChangeCheck())
                {
                    ((FairyGUI.Container)obj).fairyBatching = fairyBatching;
                }
            }

            GObject gObj = obj.gOwner;

            if (gObj != null)
            {
                EditorGUILayout.Separator();
                EditorGUILayout.LabelField(gObj.GetType().Name + ": " + gObj.id, (GUIStyle)"OL Title");
                EditorGUILayout.Separator();

                if (!string.IsNullOrEmpty(gObj.resourceURL))
                {
                    PackageItem pi = UIPackage.GetItemByURL(gObj.resourceURL);
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.PrefixLabel("Resource");
                    EditorGUILayout.LabelField(pi.name + "@" + pi.owner.name);
                    EditorGUILayout.EndHorizontal();
                }

                EditorGUI.BeginChangeCheck();
                name = EditorGUILayout.TextField("Name", gObj.name);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.name = name;
                }

                if (gObj.parent != null)
                {
                    string[] options = new string[gObj.parent.numChildren];
                    int[]    values  = new int[options.Length];
                    for (int i = 0; i < options.Length; i++)
                    {
                        options[i] = i.ToString();
                        values[i]  = i;
                    }
                    EditorGUI.BeginChangeCheck();
                    int childIndex = EditorGUILayout.IntPopup("Child Index", gObj.parent.GetChildIndex(gObj), options, values);
                    if (EditorGUI.EndChangeCheck())
                    {
                        gObj.parent.SetChildIndex(gObj, childIndex);
                    }
                }
                else
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.PrefixLabel("Child Index");
                    EditorGUILayout.LabelField("No Parent");
                    EditorGUILayout.EndHorizontal();
                }

                EditorGUI.BeginChangeCheck();
                Vector3 position = EditorGUILayout.Vector3Field("Position", gObj.position);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.position = position;
                }

                EditorGUI.BeginChangeCheck();
                Vector3 rotation = EditorGUILayout.Vector3Field("Rotation", new Vector3(gObj.rotationX, gObj.rotationY, gObj.rotation));
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.rotationX = rotation.x;
                    gObj.rotationY = rotation.y;
                    gObj.rotation  = rotation.z;
                }

                EditorGUI.BeginChangeCheck();
                Vector2 scale = EditorGUILayout.Vector2Field("Scale", gObj.scale);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.scale = scale;
                }

                EditorGUI.BeginChangeCheck();
                Vector2 skew = EditorGUILayout.Vector2Field("Skew", gObj.skew);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.skew = skew;
                }

                EditorGUI.BeginChangeCheck();
                Vector2 size = EditorGUILayout.Vector2Field("Size", gObj.size);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.size = size;
                }

                EditorGUI.BeginChangeCheck();
                Vector2 pivot = EditorGUILayout.Vector2Field("Pivot", gObj.pivot);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.pivot = pivot;
                }

                EditorGUI.BeginChangeCheck();
                string text = EditorGUILayout.TextField("Text", gObj.text);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.text = text;
                }

                EditorGUI.BeginChangeCheck();
                string icon = EditorGUILayout.TextField("Icon", gObj.icon);
                if (EditorGUI.EndChangeCheck())
                {
                    gObj.icon = icon;
                }
            }
        }
Example #6
0
        public override object getAttr(string attrName)
        {
            if (gObject != null)
            {
                switch (attrName)
                {
                case "name":
                    return(string.IsNullOrEmpty(gObject.name) ? gameObject.name : gObject.name);

                case "type":
                    return(gObject.GetType().Name.Substring(1));

                case "visible":
                    return(gObject.onStage && gObject.visible);

                case "pos":
                {
                    float x = 0f, y = 0f;
                    float sizeX = 0f, sizeY = 0f;
                    //锚点左上角修正居中到Center,为了点击更加精确
                    if (gObject.pivotX == 0.5f && gObject.pivotY == 0.5f)
                    {
                        Rect rect = gObject.TransformRect(new Rect(0, 0, gObject.width, gObject.height), null);
                        sizeX = rect.width / (float)Screen.width;
                        sizeY = rect.height / (float)Screen.height;
                        //Debug.LogFormat(string.Format("<color=yellow>ancherPoint is not center,Need modeify sizeX:{0} sizeY:{1} gObject:{2}</color>", 0.5 * sizeX, 0.5 * sizeY, gObject.name));
                    }
                    Vector2 vec2 = gObject.LocalToGlobal(Vector2.zero);
                    x = vec2.x / (float)Screen.width + 0.5f * sizeX;
                    y = vec2.y / (float)Screen.height + 0.5f * sizeY;
                    return(new float[] { x, y });
                }

                case "size":
                {
                    //Debug.Log("gObject:" + gObject + " width:" + gObject.width + " height:"+gObject.height);
                    Rect rect = gObject.TransformRect(new Rect(0, 0, gObject.width, gObject.height), null);
                    //Debug.Log("rect:" + rect);
                    return(new float[] { rect.width / (float)Screen.width, rect.height / (float)Screen.height });
                }

                case "scale":
                    return(new List <float>()
                    {
                        1.0f, 1.0f
                    });

                case "anchorPoint":
                    return(new float[] { gObject.pivotX, gObject.pivotY });

                case "zOrders":
                    return(GameObjectzOrders());

                case "clickable":
                    return(gObject.touchable);

                case "text":
                    return(gObject.text);

                case "components":
                    return(components);

                case "texture":
                    return((gObject.displayObject != null && gObject.displayObject.graphics != null && gObject.displayObject.graphics.texture != null && gObject.displayObject.graphics.texture.nativeTexture != null) ? gObject.displayObject.graphics.texture.nativeTexture.name : null);

                case "tag":
                    return(GameObjectTag());

                case "layer":
                    return(GameObjectLayerName());

                case "_ilayer":
                    return(GameObjectLayer());

                case "_instanceId":
                    return(gameObject.GetInstanceID());

                default:
                    return(null);
                }
            }
            else
            {
                switch (attrName)
                {
                case "name":
                    return(gameObject.name);

                case "type":
                    return(displayObject != null?displayObject.GetType().Name : DefaultTypeName);

                case "visible":
                    return(displayObject != null ? (displayObject.stage != null && displayObject.visible) : true);

                case "pos":
                    return(new float[] { 0.0f, 0.0f });

                case "size":
                    return(new float[] { 0.0f, 0.0f });

                case "scale":
                    return(new List <float>()
                    {
                        1.0f, 1.0f
                    });

                case "anchorPoint":
                    return(new float[] { 0.0f, 0.0f });

                case "zOrders":
                    return(new Dictionary <string, object>()
                    {
                        { "local", 0 }, { "global", 0 }
                    });

                case "clickable":
                    return(false);

                case "components":
                    return(components);

                case "tag":
                    return(GameObjectTag());

                case "layer":
                    return(GameObjectLayerName());

                case "_ilayer":
                    return(GameObjectLayer());

                case "_instanceId":
                    return(gameObject.GetInstanceID());

                default:
                    return(null);
                }
            }
        }
Example #7
0
        public override object getAttr(string attrName)
        {
            if (gObject != null)
            {
                switch (attrName)
                {
                case "name":
                    return(string.IsNullOrEmpty(gObject.name) ? gameObject.name : gObject.name);

                case "type":
                    return(gObject.GetType().Name.Substring(1));

                case "visible":
                    return(gObject.onStage && gObject.visible);

                case "pos":
                {
                    Vector2 vec2 = gObject.LocalToGlobal(Vector2.zero);
                    return(new float[] { vec2.x / (float)Screen.width, vec2.y / (float)Screen.height });
                }

                case "size":
                {
                    Rect rect = gObject.TransformRect(new Rect(0, 0, gObject.width, gObject.height), null);
                    return(new float[] { rect.width / (float)Screen.width, rect.height / (float)Screen.height });
                }

                case "scale":
                    return(new List <float>()
                    {
                        1.0f, 1.0f
                    });

                case "anchorPoint":
                    return(new float[] { gObject.pivotX, gObject.pivotY });

                case "zOrders":
                    return(GameObjectzOrders());

                case "clickable":
                    return(gObject.touchable);

                case "text":
                    return(gObject.text);

                case "components":
                    return(components);

                case "texture":
                    return((gObject.displayObject != null && gObject.displayObject.graphics != null && gObject.displayObject.graphics.texture != null && gObject.displayObject.graphics.texture.nativeTexture != null) ? gObject.displayObject.graphics.texture.nativeTexture.name : null);

                case "tag":
                    return(GameObjectTag());

                case "layer":
                    return(GameObjectLayerName());

                case "_ilayer":
                    return(GameObjectLayer());

                case "_instanceId":
                    return(gameObject.GetInstanceID());

                default:
                    return(null);
                }
            }
            else
            {
                switch (attrName)
                {
                case "name":
                    return(gameObject.name);

                case "type":
                    return(displayObject != null?displayObject.GetType().Name : DefaultTypeName);

                case "visible":
                    return(displayObject != null ? (displayObject.stage != null && displayObject.visible) : true);

                case "pos":
                    return(new float[] { 0.0f, 0.0f });

                case "size":
                    return(new float[] { 0.0f, 0.0f });

                case "scale":
                    return(new List <float>()
                    {
                        1.0f, 1.0f
                    });

                case "anchorPoint":
                    return(new float[] { 0.0f, 0.0f });

                case "zOrders":
                    return(new Dictionary <string, object>()
                    {
                        { "local", 0 }, { "global", 0 }
                    });

                case "clickable":
                    return(false);

                case "components":
                    return(components);

                case "tag":
                    return(GameObjectTag());

                case "layer":
                    return(GameObjectLayerName());

                case "_ilayer":
                    return(GameObjectLayer());

                case "_instanceId":
                    return(gameObject.GetInstanceID());

                default:
                    return(null);
                }
            }
        }