Files
MI-38/Heli_with_panels/Assets/Scripts/Panel2D/ButtonCheckable3.cs
2022-07-04 13:15:35 +03:00

59 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/* Работает на любое количество спрайтов, переключает по очереди */
public class ButtonCheckable3 : MonoBehaviour
{
//Dictionary<string, GameObject> buttonStatesList3 = new Dictionary<string, GameObject>();
List<GameObject> buttonStatesList3 = new List<GameObject>();
int click = 0;
Manager man;
void Start()
{
man = GameObject.Find("Manager").GetComponent<Manager>();
Transform[] buttonStates = this.GetComponentsInChildren<Transform>();
for (int i = 0; i < buttonStates.Length; i++)
if (buttonStates[i].name != this.name)
{
buttonStates[i].gameObject.SetActive(false);
buttonStatesList3.Add(buttonStates[i].gameObject);
}
//EnableSprite(click);
UnityObject curUO = man.objects.FindHandler(this.gameObject.name);
curUO.SetObjectState(click);
//debug:
/*if (this.name == "mfi3_Lamp5_1")
Debug.Log("Lamp5_1 states = " + (buttonStates.Length + 1) + " active = " + this.gameObject.active + " activeInHierarchy = " + this.gameObject.activeInHierarchy);
for (int i = 0; i < buttonStates.Length; i++)
if (buttonStates[i].name != this.name)
{
if (this.name == "mfi3_Lamp5_1")
Debug.Log(buttonStates[i].name + " active = " + buttonStates[i].gameObject.active + " activeInHierarchy = " + buttonStates[i].gameObject.activeInHierarchy);
} */
}
void OnMouseDown()
{
if (man.mode == "scedit" || man.mode == "play")
return;
click++;
if (click > buttonStatesList3.Count - 1) click = 0;
//Debug.Log("количество кликов + " + click);
//EnableSprite(click);
UnityObject curUO = man.objects.FindHandler(this.gameObject.name);
curUO.SetObjectState(click);
}
public void EnableSprite(int n)
{
if (n >= buttonStatesList3.Count)
return;
buttonStatesList3.ForEach(_buttonStatesList3 => _buttonStatesList3.gameObject.SetActive(false));
buttonStatesList3[n].gameObject.SetActive(true);
}
}