C# 按钮转换事件

C# 按钮转换事件,c#,unity3d,C#,Unity3d,我左右为难。我试着做这样的事情:我有3个按钮,我点击一个,它增加,我点击另一个,它增加,前一个恢复到原来的大小 private void PigeonholesHasClicked(GameObject target, MouseEventType type) { if (type == MouseEventType.CLICK) { TargetIndex = System.Array.IndexOf(Pigeonholes, target);

我左右为难。我试着做这样的事情:我有3个按钮,我点击一个,它增加,我点击另一个,它增加,前一个恢复到原来的大小

    private void PigeonholesHasClicked(GameObject target, MouseEventType type)
{
    if (type == MouseEventType.CLICK)
    {
        TargetIndex = System.Array.IndexOf(Pigeonholes, target);
        PigeonholesTrasnform();
    }
}

Vector3 mPosition;
int lastIndex = 0;
public float mIndex;
private void PigeonholesTrasnform()
{
    mPosition = new Vector3(Pigeonholes[TargetIndex].transform.position.x - mIndex, Pigeonholes[TargetIndex].transform.position.y, 0f);
    Pigeonholes[TargetIndex].transform.DOMove(mPosition, 0.5f);
    Pigeonholes[TargetIndex].GetComponent<BoxCollider2D>().enabled = false;
    if (TargetIndex != lastIndex)
    {
        mPosition = new Vector3(Pigeonholes[lastIndex].transform.position.x + mIndex, Pigeonholes[lastIndex].transform.position.y, 0f);
        Pigeonholes[lastIndex].transform.DOMove(mPosition, 0.5f);
        for (int i = 0; i < Pigeonholes.Length; i++)
        {
            if (i != TargetIndex)
                Pigeonholes[i].GetComponent<BoxCollider2D>().enabled = true;
        }
    }
    lastIndex = TargetIndex;
}

问题是,如果我单击1或2按钮,0按钮将向右移动0.4。如果我首先开始键入0,然后按1或2,则一切正常。问题是,最初的lastIndex为0,如果我将其设置为-1,则会给我一个错误。救命啊

开始时,您尚未选择任何内容=>您实际上不希望它最初为0

我会让lastIndex=-1;最初,但只是忽略这些行

mPosition=new Vector3Pigeonholes[lastIndex]。transform.position.x+mIndex,鸽子洞[lastIndex]。transform.position.y,0f; 鸽子洞[lastIndex].transform.doMoveComposition,0.5f; 如果仍然为-1->表示之前未选择任何内容:

if(lastIndex >= 0)
{
    mPosition = new Vector3(Pigeonholes[lastIndex].transform.position.x + mIndex, Pigeonholes[lastIndex].transform.position.y, 0f);
    Pigeonholes[lastIndex].transform.DOMove(mPosition, 0.5f);
}

是的,我就是这么做的,没关系