点击事件

时间:2016-05-10 12:54:33

标签: unity3d scale

我正在Unity开发2D游戏。我已经创建了一个角色面板,让玩家选择不同的角色。在面板中,有不同字符的缩略图。通过点击特定的角色缩略图,玩家可以查看该角色。缩略图的原始比例为1,当玩家点击缩略图时,比例变为双倍。一切都很好,直到这个。但问题是,每当玩家点击缩略图时,其规模就会翻倍。但我想把它限制在一次。我已经使用旗帜来停止缩放,但仍然存在问题。标志后它停止缩放,但现在玩家可以同时点击多个角色。我在这里复制片段。

 using UnityEngine;
 using UnityEngine.UI;
 using System.Collections;

public class ViewCharacter : MonoBehaviour {

[SerializeField]
private GameObject TempCharacterHolder ,TempCharacter, TempCharacterText, TempCharacterPrice;

// Use this for initialization
void Start () {
    for (int i = 0; i < ShoppingManager.instance.ShoppingList.Count; i++) {
        if (i == TheGameController.instance.GetSelectedCharacter ()) {
            PlayerPrefs.SetInt ("CharacterScaled" + i, 1);
        } else {
            PlayerPrefs.SetInt ("CharacterScaled" + i, 0);
        }
    }
}

public void ViewCharacterFunc()
{
    int ClickedCharacter = int.Parse (TempCharacterText.GetComponent<Text> ().text);

    foreach (var characters in ShoppingManager.instance.ShoppingList) {
        if (string.Equals (characters.CharacterName, TempCharacterText.GetComponent<Text> ().text)) {
            if (PlayerPrefs.GetInt("CharacterScaled"+characters.CharacterName)==0) {
                ShoppingManager.instance.IncreaseScale (TempCharacter, TempCharacterHolder);

                for (int i = 0; i < ShoppingManager.instance.ShoppingList.Count; i++) {
                    if (i == ClickedCharacter) {
                        PlayerPrefs.SetInt ("CharacterScaled" + i, 1);
                    } else {
                        PlayerPrefs.SetInt ("CharacterScaled" + i, 0);
                    }
                }
            }
        } else {
            Color clr = characters.Character_Holder.GetComponent<Image> ().color;
            clr.a = 1;
            characters.Character_Holder.GetComponent<Image> ().color = clr;

            Vector3 TempVector = characters.CharaacterObject.GetComponent<RectTransform> ().localScale;
            TempVector.x = 1f;
            TempVector.y = 1f;
            characters.CharaacterObject.GetComponent<RectTransform> ().localScale = TempVector;
        }
    }
}

}

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,当您点击它们而不是缩放一次时,您的角色会多次缩放。

如果是这种情况,我建议用bool控制它:

bool hasTouched = false;

void OnMouseDown()
{

    ShoppingManager.instance.Message.SetActive (false);

    foreach (var characters in ShoppingManager.instance.ShoppingList) {

        Color clr = characters.Character_Holder.GetComponent<Image> ().color;
        clr.a = 1;
        characters.Character_Holder.GetComponent<Image> ().color = clr;

        if (!hasTouched) //if we havent touched
        {
        Vector3 TempVector = characters.CharaacterObject.GetComponent<RectTransform> ().localScale*Time.deltaTime;
        TempVector.x = 1.0f;
        TempVector.y = 1.0f;
        characters.CharaacterObject.GetComponent<RectTransform> ().localScale = TempVector;
        hasTouched = true; //then we scale it, and we have touched it
        }

    }