// Update is called once per frame void Update() { if (item != null && go != null) { // rV2 = item.LocalToRoot (new Vector2 (item.x, item.y), item.root); rV2 = item.LocalToGlobal(new Vector2(item.x, item.y)); // Debug.LogError (item.x); // Debug.LogError (rV2.x); xx = rV2.x - item.x * scale; if (xx < left || xx > right) { if (go.activeSelf) { go.SetActive(false); } } else { if (!go.activeSelf) { go.SetActive(true); } } } }
void Start() { Application.targetFrameRate = 60; GRoot.inst.SetContentScaleFactor(1136, 640); Stage.inst.onKeyDown.Add(OnKeyDown); UIPackage.AddPackage("UI/Guide"); _mainView = UIPackage.CreateObject("Guide", "Main").asCom; _mainView.fairyBatching = true; _mainView.SetSize(GRoot.inst.width, GRoot.inst.height); _mainView.AddRelation(GRoot.inst, RelationType.Size); GRoot.inst.AddChild(_mainView); _guideLayer = UIPackage.CreateObject("Guide", "GuideLayer").asCom; _guideLayer.SetSize(GRoot.inst.width, GRoot.inst.height); _guideLayer.AddRelation(GRoot.inst, RelationType.Size); GObject bagBtn = _mainView.GetChild("bagBtn"); bagBtn.onClick.Add(() => { _guideLayer.RemoveFromParent(); }); _mainView.GetChild("n2").onClick.Add(() => { Rect rect = bagBtn.LocalToGlobal(new Rect(0, 0, bagBtn.width, bagBtn.height)); GRoot.inst.AddChild(_guideLayer); //!!Before using GlobalToLocal, the object must be added first rect = bagBtn.TransformRect(new Rect(0, 0, bagBtn.width, bagBtn.height), _guideLayer); GObject window = _guideLayer.GetChild("window"); window.size = new Vector2((int)rect.size.x, (int)rect.size.y); window.TweenMove(new Vector2((int)rect.position.x, (int)rect.position.y), 0.5f); }); }
public void StartDrag(GObject source, string icon, object sourceData, int touchPointID = -1) { if (_agent.parent != null) { return; } _sourceData = sourceData; _agent.url = icon; GRoot.inst.AddChild(_agent); Vector2 pt = source.LocalToGlobal(new Vector2(0, 0)); _agent.SetXY(pt.x, pt.y); _agent.StartDrag(null, touchPointID); }
/// <summary> /// 本地坐标转全局坐标 /// </summary> /// <param name="go"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public static Vector2 LocalToGlobal(GObject go, float x, float y) { return(go.LocalToGlobal(new Vector2(x, y))); }
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); } } }