В настоящее время у меня есть несколько проблем с обнаружением конфликтов в моей игре. У меня есть префаб, который становится порожден при помощи экземпляра(), этот объект имеетМогу ли я искать обнаружение столкновения между двумя объектами, не прикрепленными к скрипту?
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "present")
{
gameScore++;
Destroy(col.gameObject);
}
}
Так что, когда происходит столкновение, он уничтожает объект и добавляет 1 к счету.
Я использую это, чтобы установить счет:
public void setScore()
{
scoreText.text = "Score: " + gameScore.ToString();
}
и я испытал это в другом сценарии, и он работал отлично.
Когда игра воспроизводится, когда происходит столкновение, она удаляет объект, но не изменяет видимый результат в игре.
Я считаю, что это связано с тем, что я не могу присвоить публичный текст переменной
public Text scoreText;
для сборного.
Из-за этого я попытался прикрепить его к пустующему объекту в своей сцене в надежде на то, что он работает. Это не так.
Я потратил несколько часов, пытаясь разобраться в этом сейчас, и его медленно сводит меня с ума :) Был бы очень признателен за вход. Спасибо!
P.S - Я думал, может быть, если бы я мог искать столкновение в скрипте, но не нуждался в его привязке к объекту, возможно, это сработало бы? - Я понятия не имею, как это сделать, но
Еще раз спасибо за ваше время.
Спасибо за ответ! Извините, я только что предположил из-за количества предметов, связанных с единством здесь, что это место, чтобы выразить это! Я тоже попробовал. По какой-то причине объект уничтожается, но оценка не добавляется? – SGW
Хорошо, прошло некоторое время с тех пор, как он сыграл с Unity, но я просто вернусь, чтобы проверить, что мы на одной странице: у вас сцена с тремя объектами. 2 * GameObjects * (ваш коллайдер и ваш «настоящий») и * лейбл * называются баллами. Взаимодействие между игровыми игроками, похоже, хорошо работает, проблема заключается в том, как вы обновляете свою информацию. Чтобы обновить ваш ярлык, вам нужно будет иметь переменную типа Label в вашем «Present» -GO, а затем в редакторе назначить ваш ярлык gameScore этой переменной, чтобы вы могли обновить отображаемый текст. У вас есть это? Если нет, попробуйте, а также разместите все свои ошибки. –