25-03-2019, Saat: 18:21
çoktan seçmeli bir tablom var ve bunda doğru olanlar seçilecek. Toggle checkmark için 2 tane resim koydum birisi gri renginde birisi yeşil renginde. eğer seçilenler doğru çıkarsa checkmark yeşile dönecek yani yeşil renkli resim assign edilecek. buraya kadar tamam. benim sorum şu. cevapları kontrol ettiğimde doğrular ve yanlışlar çıktıktan sonra reset butonuna basıcam ama doğru olanlar kalıcak yani isOn true olarak kalacak, olmayanlar ise false olacak. bunu nasıl yapabilirim bileniniz var mı? scriptim aşağıdaki gibidir.
Kod:
public int totalActive;
public GameObject CheckResetButton;
[SerializeField]
private string gameobjectName;
[SerializeField]
private List<Toggle> multipleChoices = new List<Toggle>();
[SerializeField]
private List<bool> multipleChoicesTrueBools = new List<bool>();
[SerializeField]
private List<bool> multipleChoicesBools = new List<bool>();
[SerializeField]
private SVGAsset normalTick;
[SerializeField]
private SVGAsset trueTick;
private int activetedBools;
private Transform toggleGroupObject;
private bool isTrue;
public AudioSource audioSource;
// Use this for initialization
void Start () {
toggleGroupObject = this.transform;
gameobjectName = transform.gameObject.name;
foreach (Transform item in transform)
{
multipleChoices.Add(item.GetComponent<Toggle>());
}
StartQuest();
}
void StartQuest()
{
for (int i = 0; i < multipleChoices.Count; i++)
{
multipleChoices[i].isOn = false;
multipleChoices[i].interactable = true;
multipleChoices[i].graphic.GetComponent<SVGImage>().vectorGraphics = normalTick;
CheckResetButton.SetActive(false);
}
}
// Update is called once per frame
void Update () {
if (gameobjectName == transform.gameObject.name)
{
for (int i = 0; i < multipleChoices.Count; i++)
{
multipleChoicesBools[i] = multipleChoices[i].isOn;
if (activetedBools >= totalActive)
{
multipleChoices[i].interactable = false;
CheckResetButton.SetActive(true);
}
activetedBools = Count(multipleChoicesBools, true);
}
}
}
public void ResetButton()
{
StartQuest();
}
public void CheckButton()
{
for (int i = 0; i < multipleChoices.Count; i++)
{
if (multipleChoicesBools[i] == multipleChoicesTrueBools[i])
{
multipleChoices[i].graphic.GetComponent<SVGImage>().vectorGraphics = trueTick;
}
}
}
public static int Count(List<bool> array, bool flag)
{
int value = 0;
for (int i = 0; i < array.Count; i++)
{
if (array[i] == flag) value++;
}
return value;
}
IEnumerator AudioClipLength()
{
foreach (Transform item in transform)
{
item.GetComponent<Toggle>().interactable = false;
yield return new WaitForSeconds(audioSource.clip.length);
item.GetComponent<Toggle>().interactable = true;
}
}
public void Caroutine()
{
StartCoroutine(AudioClipLength());
}