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); }
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(); }
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); }
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; } } }
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); } } }
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); } } }