LayerAssigner.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using UnityEngine;
  2. [ExecuteInEditMode]
  3. public class LayerAssigner : MonoBehaviour
  4. {
  5. [Header("Auto-assign layers")]
  6. [SerializeField] private bool autoAssign = true;
  7. void Start()
  8. {
  9. if (autoAssign)
  10. {
  11. AssignLayers();
  12. }
  13. }
  14. [ContextMenu("Assign Layers Now")]
  15. public void AssignLayers()
  16. {
  17. // Assign all players to Player layer (6)
  18. PlayerController[] players = FindObjectsByType<PlayerController>(FindObjectsSortMode.None);
  19. foreach (var player in players)
  20. {
  21. player.gameObject.layer = LayerMask.NameToLayer("Player");
  22. Debug.Log($"Assigned {player.stats.playerName} to Player layer");
  23. }
  24. // Assign puck to Puck layer (7)
  25. PuckController puck = FindFirstObjectByType<PuckController>();
  26. if (puck != null)
  27. {
  28. puck.gameObject.layer = LayerMask.NameToLayer("Puck");
  29. Debug.Log("Assigned Puck to Puck layer");
  30. }
  31. // Find rink objects (anything with "Rink" or "Ice" in name)
  32. GameObject[] allObjects = FindObjectsByType<GameObject>(FindObjectsSortMode.None);
  33. foreach (var obj in allObjects)
  34. {
  35. if (obj.name.ToLower().Contains("rink") || obj.name.ToLower().Contains("ice"))
  36. {
  37. obj.layer = LayerMask.NameToLayer("Rink");
  38. Debug.Log($"Assigned {obj.name} to Rink layer");
  39. }
  40. }
  41. Debug.Log("Layer assignment complete!");
  42. }
  43. }