Unity Interactable = False突然无法正常工作

时间:2017-03-19 15:18:05

标签: button unity3d

现在我遇到了一个非常非常奇怪的问题。下面是代码。请原谅这个长度。这个类有多个功能,当只有3个(向上按钮C)按钮被引用时,实际上我回到初始场景后,我的手机上安装的按钮已被禁用。

所以我认为一切都很好决定对我在初始屏幕上的所有按钮执行此操作。但由于某些原因它不起作用,它不再禁用按钮了。我有GameLogic.cs,我已经声明了我的变量和这个脚本。 16个按钮= 16个字母。所以基本上它只是在按下按钮后递增一个值然后一旦我们回到初始屏幕在更新时,如果值是> = 1则必须禁用该特定按钮。

当我第一次为手机制作时,它再次正常工作。它就在那里。这太奇怪了。也许你可以在这里看到代码的一些问题?

感谢。

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


public class forButtonDisabler : MonoBehaviour {

    public Button buttonA;
    public Button buttonB;
    public Button buttonC;
    public Button buttonD;
    public Button buttonE;
    public Button buttonF;
    public Button buttonG;
    public Button buttonH;
    public Button buttonI;
    public Button buttonJ;
    public Button buttonK;
    public Button buttonL;
    public Button buttonM;
    public Button buttonN;
    public Button buttonO;
    public Button buttonP;


    void OnEnable()
    {
        //Register Button Events

        buttonA = GameObject.Find("btn5ptsPP").GetComponent<Button>();
        buttonB = GameObject.Find("btn5ptsDP").GetComponent<Button>();
        buttonC = GameObject.Find("btn5ptsTE").GetComponent<Button>();
        buttonD = GameObject.Find("btn5ptsTA").GetComponent<Button>();
        buttonE= GameObject.Find("btn10ptsPP").GetComponent<Button>();
        buttonF = GameObject.Find("btn10ptsDP").GetComponent<Button>();
        buttonG = GameObject.Find("btn10ptsTE").GetComponent<Button>();
        buttonH = GameObject.Find("btn10ptsTA").GetComponent<Button>();
        buttonI = GameObject.Find("btn15ptsPP").GetComponent<Button>();
        buttonJ = GameObject.Find("btn15ptsDP").GetComponent<Button>();
        buttonK = GameObject.Find("btn15ptsTE").GetComponent<Button>();
        buttonL = GameObject.Find("btn15ptsTA").GetComponent<Button>();
        buttonM = GameObject.Find("btn20ptsPP").GetComponent<Button>();
        buttonN = GameObject.Find("btn20ptsDP").GetComponent<Button>();
        buttonO = GameObject.Find("btn20ptsTE").GetComponent<Button>();
        buttonP = GameObject.Find("btn20ptsTA").GetComponent<Button>();

        buttonA.onClick.AddListener(() => buttonCallBack(buttonA));
        buttonB.onClick.AddListener(() => buttonCallBack(buttonB));
        buttonC.onClick.AddListener(() => buttonCallBack(buttonC));
        buttonD.onClick.AddListener(() => buttonCallBack(buttonD));
        buttonE.onClick.AddListener(() => buttonCallBack(buttonE));
        buttonF.onClick.AddListener(() => buttonCallBack(buttonF));
        buttonG.onClick.AddListener(() => buttonCallBack(buttonG));
        buttonH.onClick.AddListener(() => buttonCallBack(buttonH));
        buttonI.onClick.AddListener(() => buttonCallBack(buttonI));
        buttonJ.onClick.AddListener(() => buttonCallBack(buttonJ));
        buttonK.onClick.AddListener(() => buttonCallBack(buttonK));
        buttonL.onClick.AddListener(() => buttonCallBack(buttonL));
        buttonM.onClick.AddListener(() => buttonCallBack(buttonM));
        buttonN.onClick.AddListener(() => buttonCallBack(buttonN));
        buttonO.onClick.AddListener(() => buttonCallBack(buttonO));
        buttonP.onClick.AddListener(() => buttonCallBack(buttonP));


    }

    private void buttonCallBack(Button buttonPressed)
    {
        if (buttonPressed == buttonA)
        {

            GameLogic.Cbtn1++;

        }

        if (buttonPressed == buttonB)
        {

            GameLogic.Cbtn2++;

        }

        if (buttonPressed == buttonC)
        {


            GameLogic.Cbtn3++;


        }
        if (buttonPressed == buttonD)
        {


            GameLogic.Cbtn4++;


        }
        if (buttonPressed == buttonE)
        {

            GameLogic.Cbtn5++;


        }
        if (buttonPressed == buttonF)
        {

            GameLogic.Cbtn6++;


        }
        if (buttonPressed == buttonG)
        {

            GameLogic.Cbtn7++;


        }
        if (buttonPressed == buttonH)
        {

            GameLogic.Cbtn8++;


        }
        if (buttonPressed == buttonI)
        {


            GameLogic.Cbtn9++;


        }
        if (buttonPressed == buttonJ)
        {


            GameLogic.Cbtn10++;


        }
        if (buttonPressed == buttonK)
        {


            GameLogic.Cbtn11++;


        }
        if (buttonPressed == buttonL)
        {


            GameLogic.Cbtn12++;


        }
        if (buttonPressed == buttonM)
        {


            GameLogic.Cbtn13++;


        }
        if (buttonPressed == buttonN)
        {

            GameLogic.Cbtn14++;


        }
        if (buttonPressed == buttonO)
        {


            GameLogic.Cbtn15++;


        }
        if (buttonPressed == buttonP)
        {


            GameLogic.Cbtn16++;


        }

    }

    void OnDisable()
    {
        //Un-Register Button Events
        buttonA.onClick.RemoveAllListeners();
        buttonB.onClick.RemoveAllListeners();
        buttonC.onClick.RemoveAllListeners();
        buttonD.onClick.RemoveAllListeners();
        buttonE.onClick.RemoveAllListeners();
        buttonF.onClick.RemoveAllListeners();
        buttonG.onClick.RemoveAllListeners();
        buttonH.onClick.RemoveAllListeners();
        buttonI.onClick.RemoveAllListeners();
        buttonJ.onClick.RemoveAllListeners();
        buttonK.onClick.RemoveAllListeners();
        buttonL.onClick.RemoveAllListeners();
        buttonM.onClick.RemoveAllListeners();
        buttonN.onClick.RemoveAllListeners();
        buttonO.onClick.RemoveAllListeners();
        buttonP.onClick.RemoveAllListeners();

    }

    // Update is called once per frame
    void Update()
    {
        if (GameLogic.Cbtn1 >= 1)
        {
            buttonA.interactable = false;


        }

        if (GameLogic.Cbtn2 >= 1)
        {

            buttonB.interactable = false;

        }

        if (GameLogic.Cbtn3 >= 1)
        {
            buttonC.interactable = false;


        }
        if (GameLogic.Cbtn4 >= 1)
        {
            buttonD.interactable = false;


        }
        if (GameLogic.Cbtn5 >= 1)
        {
            buttonE.interactable = false;


        }

        if (GameLogic.Cbtn6 >= 1)
        {
            buttonF.interactable = false;


        }
        if (GameLogic.Cbtn7 >= 1)
        {
            buttonG.interactable = false;


        }
        if (GameLogic.Cbtn8 >= 1)
        {
            buttonH.interactable = false;


        }
        if (GameLogic.Cbtn9 >= 1)
        {
            buttonI.interactable = false;


        }
        if (GameLogic.Cbtn10 >= 1)
        {
            buttonJ.interactable = false;


        }

        if (GameLogic.Cbtn11 >= 1)
        {
            buttonK.interactable = false;


        }

        if (GameLogic.Cbtn12 >= 1)
        {
            buttonL.interactable = false;
        }
        if (GameLogic.Cbtn13 >= 1)
        {
            buttonM.interactable = false;
        }
        if (GameLogic.Cbtn14 >= 1)
        {
            buttonN.interactable = false;
        }
        if (GameLogic.Cbtn15 >= 1)
        {
            buttonO.interactable = false;
        }
        if (GameLogic.Cbtn16 >= 1)
        {
            buttonP.interactable = false;
        }
    }
}

0 个答案:

没有答案