Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ПОЖАЛУЙСТА ПОМОГИТЕ! Корутина Голод (Slider). Конфликт между пополнением голода и корутиной голода | UNITY 3d

Максим Тютерев Ученик (193), на голосовании 8 месяцев назад
Здравствуйте, я новичок в Unity. Есть код, который с начала старта сцены запускает корутину - голод:
IEnumerator hungry(float h)
{
while (currentHungry >= minHungry)
{
yield return new WaitForSeconds(time);
currentHungry -= h;
slider.value = currentHungry;
}
}
___________________________________________________________
Так же есть код, который пополняет индиктор(slider) голода:
public void AddFood(int value)
{
GetComponent<Slider> ().value += value;

}
Проблема в том, что при съедании еды из инвентаря - индиктор пополняется, а потом встаёт обратно и начинет дальше уменьшаться. При съедании еды, нужно остановить корутину на какое-то время и только через это время она запускалась бы снова, но уже с полным индиктором голода(так как игрок съел еду и индиктор стал полным).
____________________________________________________________
Так же существует код съедания еды из инвентаря(при нажатии на кнопку):
public void OnPointerClick(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Left)
{
if (inventory.item[index].customEvent != null)
{
inventory.item[index].customEvent.Invoke();
}
}
_____________________________________________________________
Уже который час не могу понять, как такое реализовать. Это кажется для меня чем-то невероятно сложным. Пожалуйста, помогите.
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (242733) 9 месяцев назад
Фокус в том, что в корутине новое значение слайдера задается не на основе старого значения слайдера, а на основе значения поля currentHungry, которое только уменьшается.

При утолении голода увеличивается значение слайдера. Однако это никак не влияет на значение поля currentHungry: в корутине оно продолжает убывать с того места, где остановилось.

Необходимо либо уменьшать currentHungry в обоих местах, либо вообще обходиться без currentHungry.
Максим ТютеревУченик (193) 9 месяцев назад
Точно, тогда можно просто сделать вот так:
public void AddFood(int value)
{
GetComponent<Hungry> ().currentHungry += value;

}

Но тогда, как после съедания еды, остановить корутину на какое-то время?
Андрей Панарин Искусственный Интеллект (242733) Я не уверен, что в этом есть необходимость.
Похожие вопросы