protected virtual void OnDirectionSelected(SetDirectionComponent direction) { //根据方向为对应的移动组件赋值 if (direction == rightArrowComp) { item.gameObject.GetComponent <MoveItem>().moveDir = Vector2.right; } else if (direction == leftArrowComp) { item.gameObject.GetComponent <MoveItem>().moveDir = Vector2.left; } rightArrowComp.OnDirectionSelected -= OnDirectionSelected; leftArrowComp.OnDirectionSelected -= OnDirectionSelected; Completation(); setting = false; }
protected virtual void Preparations() { derivedFromItem = false; GameObject itemDirectionComponent = GameObject.Find("ItemDirectionComponent"); RightArrow = itemDirectionComponent.transform.Find("RightArrow").gameObject; LeftArrow = itemDirectionComponent.transform.Find("LeftArrow").gameObject; GuideText = itemDirectionComponent.transform.Find("GuideText").gameObject; RightArrow = Instantiate(RightArrow, item.transform); LeftArrow = Instantiate(LeftArrow, item.transform); GuideText = Instantiate(GuideText, item.transform); float itemXD, itemYD; var itemSpriteRender = item.gameObject.GetComponent <SpriteRenderer>(); if (itemSpriteRender != null) { Sprite itemSprite = itemSpriteRender.sprite; itemXD = itemSprite.rect.width * item.transform.localScale.x * 16 / Camera.main.pixelWidth; itemYD = itemSprite.rect.height * item.transform.localScale.y * 16 / Camera.main.pixelHeight; } else { itemXD = item.transform.localScale.x / 2; itemYD = item.transform.localScale.y / 2; } Vector2 itemPos = item.transform.position; RightArrow.transform.position = new Vector2(itemPos.x + itemXD + 1f, itemPos.y); LeftArrow.transform.position = new Vector2(itemPos.x - itemXD - 1f, itemPos.y); GuideText.transform.position = new Vector2(itemPos.x, itemPos.y + itemYD + 1f); rightArrowComp = RightArrow.AddComponent <SetDirectionComponent>(); leftArrowComp = LeftArrow.AddComponent <SetDirectionComponent>(); rightArrowComp.OnDirectionSelected += OnDirectionSelected; leftArrowComp.OnDirectionSelected += OnDirectionSelected; RightArrow.SetActive(true); LeftArrow.SetActive(true); GuideText.SetActive(true); }