Проблема в том, что у вас есть два Main_B2
скрипта, и каждый из них отслеживает свои собственные значения для полей isOpen
и open
.
Одним из решений этого может быть создание полей static
, чтобы они были общими для всех экземпляров Main_B2
.
Animation anim;
private static bool isOpen = false;
private static bool open = false;
Если вы сделаете это, ваш код должен работать как задумано - каждый экземпляр Main_B2
будет ссылаться на одни и те же поля всякий раз, когда они ссылаются на isOpen
или open
.
С учетом вышесказанного, static
поля могут быть немного неаккуратными, если вы когда-нибудь захотите попробовать и повторно использовать код, поэтому лучшим вариантом может быть только один экземпляр Main_B2
где-то еще например, Canvas
вместо одного на каждой кнопке.
Тогда в нем могут быть public GameObject
поля, в которые можно перетаскивать объекты кнопок, и private Animation
поля для анимации .:
public GameObject button1
public GameObject button2
private Animation anim1
private Animation anim2
Затем в Start
:
anim1 = button1.GetComponent<Animation>();
anim2 = button2.GetComponent<Animation>();
И тогда, куда бы вы ни ссылались на anim
, вы бы ссылались на anim1
или anim2
вместо этого:
void ReverseAnim_1()
{
anim1.["1"].speed = -1;
anim1.["1"].time = anim1["1"].length;
anim1.Play();
}
void Anim1()
{
anim1["1"].speed = 1;
anim1.Play();
}
void Anim2()
{
anim2["2"].speed = 1;
anim2.Play();
}
void ReverseAnim_2()
{
anim2["2"].speed = -1;
anim2["2"].time = anim2["2"].length;
anim2.Play();
}