samana писал(а):Перебрать все объекты сцены и проверить их тег или слой.Синтаксис:Используется csharpGameObject[] allGo = FindObjectsOfType<GameObject>();
foreach (GameObject go in allGo)
{
if(go.CompareTag("tagMane")) //...
if(go.layer == LayerMask.NameToLayer("myLayer"))//....
}
seaman писал(а):GameObject.FindGameObjectsWithTag
Dragon-FAST писал(а):samana писал(а):Перебрать все объекты сцены и проверить их тег или слой.Синтаксис:Используется csharpGameObject[] allGo = FindObjectsOfType<GameObject>();
foreach (GameObject go in allGo)
{
if(go.CompareTag("tagMane")) //...
if(go.layer == LayerMask.NameToLayer("myLayer"))//....
}
Спасибо всё отлично работает!
samana писал(а):У вас получился очень сложным подход к ситуации. Не надо ничего проверять каждый кадр и тем более искать в Update объекты, это затратно.
Недавно была похожая тема - viewtopic.php?f=105&t=42093 , вы можете сделать примерно похожее решение. Нужно просто чтобы менеджер уровня фиксировал факт смерти игрока и выполнял нужную логику.
PlayerСинтаксис:Используется csharpusing System;
using UnityEngine;
public class Player : MonoBehaviour {
// событие игрока, которое сработает при его смерти
public static event Action DEATH;
// Перед смертью кричим "Кажется я уми..ра......."
private void OnDestroy()
{
if (DEATH != null) DEATH();
}
}
GameManagerСинтаксис:Используется csharpusing UnityEngine;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
private static int playerLifes = 5;
// менеджер проснулся и начал прислушиваться и игроку
private void OnEnable()
{
Player.DEATH += onPlayerDeath;
}
// менежден уснул и ничего не хочет слышать
private void OnDisable()
{
Player.DEATH -= onPlayerDeath;
}
// Кажется я что-то слышу!! О нет, игрок умер!!! Что же делать, что же делать?!?!
private void onPlayerDeath()
{
playerLifes--;
if (playerLifes == 0)
{
SceneManager.LoadScene(0);
playerLifes = 5;
}
else
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
}
Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 14