Вы сейчас тут: Главная » Каталог статей » Обучающие статьи
Графический бар здоровья
Категория: Обучающие статьи | Просмотров: 883 | Добавил: Badman
Он показывает нам отображение изображений для чисел с плавающей точкой. Например, отображать количество здоровья, зеленый (много здоровья), красный (мало здоровья). Значения могут быть представлены в виде чисел с плавающей точкой (например, 0,0 - 1,0) или в виде диапазонов в пределах больших чисел (например, 0 - 50), общее решение заключается в выявлении суб-диапазона числового значения и отображать соответствующее изображение.



}Скачать изображения для урока{

Для отображения изображений, соответствующим десятичным числам, выполните следующие действия:
Прикрепите следующий C# скрипт к Main camera:

using UnityEngine;
using System.Collections;
public class HealthBar : MonoBehaviour {

const int MAX_HEALTH = 100;
public Texture2D bar00;
public Texture2D bar10;
public Texture2D bar20;
public Texture2D bar30;
public Texture2D bar40;
public Texture2D bar50;
public Texture2D bar60;
public Texture2D bar70;
public Texture2D bar80;
public Texture2D bar90;
public Texture2D bar100;
private int healthPoints = MAX_HEALTH;

void OnGUI() {
GUILayout.Label("health = " + healthPoints);
float normalisedHealth = (float)healthPoints / MAX_HEALTH;
GUILayout.Label( HealthBarImage(normalisedHealth) );
bool decButtonClicked = GUILayout.Button("decrease power");
bool incButtonClicked = GUILayout.Button("increase power");
if( decButtonClicked )
healthPoints -= 5;
if( incButtonClicked )
healthPoints += 5;
}

private Texture2D HealthBarImage(float health) {
if( health > 0.9 ){ return bar100; }
else if( health > 0.8 ){ return bar90; }
else if( health > 0.7 ){ return bar80; }
else if( health > 0.6 ){ return bar70; }
else if( health > 0.5 ){ return bar60; }
else if( health > 0.4 ){ return bar50; }
else if( health > 0.3 ){ return bar40; }
else if( health > 0.2 ){ return bar30; }
else if( health > 0.1 ){ return bar20; }
else if( health > 0 ){ return bar10; }
else{ return bar00; }
}
}


Выберите Main Camera и в окне Inspector в нужные переменные перенесите изображения
Приватная целочисленная переменная healthPoints хранит игровой параметр для отображения количества здоровья. Константа MAX_HEALTH определяет значение healthPoints, которая указывает полное здоровье. 11 публичных переменных хранят изображения различных версий бара здоровья, для соответствия различным диапазонам здоровья. Например, bar00 соответствует нулевому количеству оставшегося здоровья, и он будет отображать изображение с предупреждением в красной окраске.

Основная функция в этом рецепте это метод, который возвращает объект текстуры изображения, соответствующий текущему значению healthPoints. Создается переменная normalisedHealth (которая всегда будет в диапазоне от 0,0 до 1,0) путем деления healthPoints на MAX_HEALTH. Эта float переменная передается в метод HealthBarImage(), который возвращает изображение. Изображение отображается с помощью вызова метода Label().

Метод HealthBarImage() использует последовательность операторов if, чтобы решить какое изображение вернуть. Указанное значение health испытывается в этой последовательности - 0,9 тестируется первой, затем 0,8, и так далее. Если значение normalisedHealth от 0,9 до 1,0, то будет отображаться изображение в переменной bar100.

Код с массивом текстур
Хотя наличие большого количества публичных переменных типа Texture2D является простым для создания кода, но чище код может быть достигнут с помощью одного массива объектов Texture2D (в окне Inspector вам нужно будет установить размер массива на 11):

public Texture2D[] barImageArray;

Теперь в методе HealthBarImage() нам нужно, что бы оператор if возвращал значение массива:

if( health > 0.9 ){ return barImageArray[10]; }

Теги: Healt Bar
Комментарии пользователей
Количество комментариев к материалу: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Регистрация   Вход
Авторизация
Форма входа на сайт
Чат
Удобное общение
200
Категории раздела
Категории материалов
Голосование
Опрос пользователей
Оцените сайт
Всего ответов: 62
Результаты
Статистика
Сатистика на сайте

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Все материалы опубликованные на сайте представлены исключительно для ознакомительного просьмота. Любое ваше несанкционированное использование "ассетов" в ваших коммерческих проектах карается уголовной ответственностью.
Хостинг от uCoz