Как посчитать количество объектов с определенным тегом в Unity?
Всем привет, нужна помощь в решении проблемы, т.к. еще школьник, только учусь. В общем, суть такая: Есть сцена, на ней кубы, Игрок-шар, управляется на W,A,S,D или стрелки, при соприкосновении с кубом тот уничтожается и увеличивает переменную с количеством кубов на 1. Когда переменная достигает одного значения, то сцена переключается. Главным образом проблема состоит в том, что пересоздавать один и тот же скрипт только чтобы поменять одну цифру не рационально, поэтому нужно в if(countCube==) После == поставить универсальное решение, которое собирает количество объектов с тегом "cube" и вписывает их туда.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class MovePlayer : MonoBehaviour {
public Rigidbody player;
int countCube=0;
public Text countText;
void Start () {
}
void Update () {
player.AddForce (new Vector3(Input.GetAxis("Horizontal"),0f,Input.GetAxis("Vertical")), ForceMode.Impulse);
if (countCube==4){
SceneManager.LoadScene("Scene2");
}
countText.text = "Cubes Collected: " + countCube;
if(player.transform.position.y<-5){
SceneManager.LoadScene (SceneManager.GetActiveScene ().name);
}
}
void OnTriggerEnter(Collider other){
if (other.tag == "cube") {
Destroy (other.gameObject);
countCube++;
}
}
}
Ответы (1 шт):
Что происходит в комментариях? Зачем писать столько комментариев, если можно перейти в чат. Отвечаю на все вопросы.
- Метод GameObject.FindGameObjectsWithTag() возвращает массив всех элементов сцены с указанным тегом. Это нужно присовить переменной с типом данных GameObject[].
- Чтобы узнать длину массива используем поле Length:
название_массива.Length - Для того чтобы получить последний элемент массива почти всегда используется конструкция получения элемента с индексом (длина массива - 1). Почему? Представим массив строк (слева - индексы элементов, справа - значения)
0 - "Hello"
1 - "World"
2 - "How"
3 - "Are"
4 - "You"
Допустим, нужно получить элемент You. Длина массива 5 элементов, однако мы не можем получить 5-й элемент, т.к. послдений - 4-й (нумерация начинается с 0). Поэтому для получения последнего элемента делаем название_массива[название_массива.Length - 1]
Для получение предпоследнего элемента вычитаем 2, предпредпоследнего вычитаем 3 и т.д. Но обычно приходится получать последний элемент, поэтому вычитаем 1.
Скобки пользователь Methort указал неверно, о чем в последствии написал: они должны быть квадратные, т.к. элемент массива получается с помощью квадратных скобок. Круглые используются в программировании в основном при указании аргументов функции в
- самой функции (перечисление нужных аргументов)
- при вызове функции (задание аргументов).
Если остались еще вопросы, задавайте! Если мой ответ был вам полезен, пожалуйста, примите его, поставив галочку.