如何通过单击更改2D精灵对象?并且在单击另一个对象时会变回来,例如网页设计中的焦点效果

时间:2018-11-19 09:55:20

标签: unity3d

我希望了解如何通过单击来更改对象(子画面)(然后它将更改为另一个子画面对象)。

如果我单击另一个对象,则先前更改的对象将被改回,而新单击的对象将被更改为另一个对象。

1 个答案:

答案 0 :(得分:1)

如何更改Sprite

private void changeSprite(Sprite newSprite){
  this.GetComponent<SpriteRenderer>().sprite = newSprite;  
}
//if the object is an image you should use this instead
private void changeSprite(Sprite newSprite){
  this.GetComponent<Image>().overrideSprite = newSprite;  
}

如何通过“点击”获取它

private void OnMouseDown()
{
  changeSprite();
}
//If it's a UI Element
public Button btn;
private void Start()
{
  btn.onClick.AddListener(changeSprite);  
}

“交换内容”效果,请注意,这仅对2个对象是“静态”的,您需要遍历列表/数组或任何独立于对象数量而动态工作的对象。

//Your Object Class
public Sprite initialSprite;
public Sprite changeSprite;
public bool isChanged = false;
public GameObject  otherObject;

private void OnMouseDown()
{
  changeSprite(changeSprite);
  isChanged = !isChanged;
  if(otherObject.isChanged)
  {
    otherObject.changeSprite(initialSprite); 
    otherObject.isChanged = !otherObject.isChanged; 
  }
}