Не получается сделать вывод очков
Добавлено: 18 сен 2019, 20:35
Здравствуйте, входе создания игры появилась глобальная проблема!Мне нужно чтоб на экране выводилось кол-во очков(очки начисляются за каждое сломанное препятсвие, если у препятсвия 5 хп, то начислится 5 очков).Все объекты спавнятся рандомно и для каждого них всех 1 скрипт и все взаимодействия с объектами отслеживаются в скрипте, который висит на них(снятие хп, уничтожение).У меня не получается коректно выводить кол-во очков.На сколько я понимаю после каждого уничтожения объекта счетчик обнуляется(скрипт ниже)пробовал создавать пустой объект и вешать на него этот скрипт-не вышло.Пытался делать переменные хп и очков публичными и передавать их в другой скрипт(методами:Getcomponent<>().score и передавая объект через инспектор)- не вышло.Сейчас думаю, что нужно создать отдельный скрипт, который будет отслеживать нажатия на препятствия и снимать у них хп и остальную логистику. Помогите пожалуйста!Заранее всем спасибо за потраченное время.Сейчас вышел такой скрипт, для самих объектов
Синтаксис:
Используется csharp
public class Управление : MonoBehaviour {
public int hp;
public int score;
public Vector2 direction ;
public float acceleration;
public Rigidbody2D rb;
private Text txt;
public int score1;
void Start () {
//Обрашаюсь к тексту на экране
txt = GameObject.Find("Score").GetComponent<Text>();
//задаю хп и очки по названию объекта
name = gameObject.name;
switch(name){
case "5(Clone)":
hp = 5;
score1 = 5;
break;
case "10(Clone)":
hp = 10;
score1 = 10;
break;
case "15(Clone)":
hp = 15;
score1 = 15;
break;
case "25(Clone)":
hp = 25;
score1 = 25;
break;
case "50(Clone)":
hp = 50;
score1 = 50;
break;
case "100(Clone)":
hp = 100;
score1 = 100;
break;
}
}
void OnMouseDown()
{
hp-=10;
}
//падение объекта
void FixedUpdate() {
rb.AddForce(direction.normalized* acceleration);
}
//вывод на экран кол-во очков, но каждый раз очки обнуляются,(было 10 очков, после того как сломал другой объект стало 15)
void Update() {
if (hp <= 0)
{
score =score + score1;
Destroy(this.gameObject);// Debug.Log(score);
Debug.Log(score);
txt.text = "Score:" + score.ToString();
}
}
}
public int hp;
public int score;
public Vector2 direction ;
public float acceleration;
public Rigidbody2D rb;
private Text txt;
public int score1;
void Start () {
//Обрашаюсь к тексту на экране
txt = GameObject.Find("Score").GetComponent<Text>();
//задаю хп и очки по названию объекта
name = gameObject.name;
switch(name){
case "5(Clone)":
hp = 5;
score1 = 5;
break;
case "10(Clone)":
hp = 10;
score1 = 10;
break;
case "15(Clone)":
hp = 15;
score1 = 15;
break;
case "25(Clone)":
hp = 25;
score1 = 25;
break;
case "50(Clone)":
hp = 50;
score1 = 50;
break;
case "100(Clone)":
hp = 100;
score1 = 100;
break;
}
}
void OnMouseDown()
{
hp-=10;
}
//падение объекта
void FixedUpdate() {
rb.AddForce(direction.normalized* acceleration);
}
//вывод на экран кол-во очков, но каждый раз очки обнуляются,(было 10 очков, после того как сломал другой объект стало 15)
void Update() {
if (hp <= 0)
{
score =score + score1;
Destroy(this.gameObject);// Debug.Log(score);
Debug.Log(score);
txt.text = "Score:" + score.ToString();
}
}
}