2016-01-27 3 views
1

Я хочу создать панель состояния, используя информацию, которую я сейчас показываю в GUItext. Поведение, которое я хочу, - это ухудшение здоровья со временем (например, таймер обратного отсчета), но увеличение на небольшую величину всякий раз, когда игрок собирает объект.Unity3d bar bar Элемент GUI

Вот мой текущий код:

using UnityEngine; 
using System.Collections; 

public class TimeText : MonoBehaviour { 

    public GUIText timeText; 
    //countdown 
    public float timer = 99.00f; 

    // Update is called once per frame 
    void Update() 
    { 
     timer -= Time.deltaTime*5; 

     timeText.text = "Health: " + timer.ToString("0"); 

    } 
} 

Вот что я хочу, чтобы мой бар здоровья выглядеть следующим образом: enter image description here

+0

Вы, кажется, используете очень давнюю систему «gui», принадлежащую Unity. ** Не используйте **. Просто используйте обычную систему Unity.UI. это очень просто. – Fattie

+0

simpy use Invoke или InvokeRepeating. google 1000s of QA на этом – Fattie

+0

Возможный дубликат [Unity. Функциональный вызов через определенный промежуток времени] (http://stackoverflow.com/questions/21598444/unity-function-call-after-a-certain-period-of-time) – Fattie

ответ

1

Как уже упоминалось выше @JoeBlow, избежать старой механики GUI. Они очень тяжелые, грубые и неэффективные.

@Serlite сломал вопрос для вас. Это то, что вам нужно.

Для медицинского бара я предлагаю использовать компонент Unity UI Image. Используйте изображение, которое вы хотите (возможно, тот же, что вы отправили в своем вопросе?) Для панели работоспособности, и измените fillAmount на основе вашей переменной timer (хотя лично я бы переименовал ее в нечто вроде «здоровье», чтобы лучше представить ее цель) ,

Похоже, вы уже позаботились о сокращении здоровья с течением времени. Чтобы добавить к здоровью, используйте Colliders как триггеры в сцене и OnTriggerEnter или любые аналогичные методы моноположения по умолчанию для соответствующих объектов.

Я предлагаю пройти пару обучающих онлайн, чтобы вы лучше понимали логику программирования в Unity. Надеюсь, это поможет!

+0

Согласен, GUI немного неудобен в использовании, но я никогда не читал нигде о том, что пользовательский интерфейс работает быстрее, чем GUI. Можете ли вы связать источник, пожалуйста? –

+0

У меня есть единственная версия 4.5.1, и у меня нет изображения UI. Во всяком случае, как будет работать анимация добавления или удаления бара здоровья персонажа? – mar97

+0

@ mar97 Рассматривали ли вы обновление своей версии Unity? В какой-то момент необходимо отказаться от устаревших систем Unity, поскольку они могут действительно замедлить ваше развитие. – Serlite