У меня есть 2 скрипта:
CharacterHead
и
UIBattleController
В самой игре мы тычем мышкой по игровому полю и персонаж стреляет, но я сейчас делаю так, чтобы когда я нажимаю на кнопки ГУИ персонаж не реагировал бы.
Для этого я сделал:
1) В скрипте, где обрабатываются кнопки я создал булеву переменную, а в методе Down у кнопок эта переменная становится ТРУ, а в методе Up переменная становится ФОЛС.
Например, кнопка выбора пистолета:
Синтаксис:
Используется csharp
public void ButtonPistolDown (){
_anyButtonDown = true;
Debug.Log("1");
if (_weaponSelector != 0) {
_imageWeaponPistol.sprite = _spritePicturePistolDown;
}
}
public void ButtonPistolUp (){
_anyButtonDown = false;
_imageWeaponPistol.sprite = _spritePicturePistolUp;
}
public void ButtonPistolClick (){
_weaponSelector = 0;
//_characterHead._timeTilNextFire = 0;
}
_anyButtonDown = true;
Debug.Log("1");
if (_weaponSelector != 0) {
_imageWeaponPistol.sprite = _spritePicturePistolDown;
}
}
public void ButtonPistolUp (){
_anyButtonDown = false;
_imageWeaponPistol.sprite = _spritePicturePistolUp;
}
public void ButtonPistolClick (){
_weaponSelector = 0;
//_characterHead._timeTilNextFire = 0;
}
_anyButtonDown и есть та переменная.
2) А в скрипте персонажа я в условии при котором персонаж должен стрелять я воткнул:
Синтаксис:
Используется csharp
if (Input.GetMouseButton (0) && _UIBattleController._timerMenuGUI == 4 && !_fightGUI.activeSelf && if (Input.GetMouseButton (0) && _UIBattleController._timerMenuGUI == 4 && !_fightGUI.activeSelf && !_UIBattleController._anyButtonDown) {) {
Debug.Log("2");
//ПИФ-ПАФ
}
Debug.Log("2");
//ПИФ-ПАФ
}
То есть по задумке, когда кто-то пытается нажать на кнопку, то переменная _anyButtonDown становится ТРУ, и в условии стрельбы не должна пропустить исполнение блока выстрела, но мать его за ногу, персонаж успевает разочек выстрелить...
Тогда я сделал приоритет выполнения скриптов:
Мы видим, что скрипт ГУИ выполняется ПЕРВЕЕ скрипта ПЕРСОНАЖА, к тому же я делал Debug.Log("1"); и Debug.Log("2");, угадайте, что происходит))) Правильно, сначала в консоли пишется 2, происходит выстрел, а потом пишется 1.
Помогите пожалуйста, в чем дело-то?