Основной скрипт прикреплен к пустому игровому объекту. И этот скрипт запускается первым.
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class DoorsLockManager : MonoBehaviour
{
private List<List<DoorHori>> doorsLR = new List<List<DoorHori>>();
public static void GetDoors(List<DoorHori> doorsLR)
{
doorsLR.AddRange(doorsLR);
}
private List<HoriDoorManager> Doors = new List<HoriDoorManager>();
private void Start()
{
var doors = GameObject.FindGameObjectsWithTag("Door");
foreach(var door in doors)
{
Doors.Add(door.GetComponent<HoriDoorManager>());
}
}
}
Этот скрипт второй прикрепляется к каждой двери, и запуск в этом скрипте выполняется после верхнего скрипта:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class HoriDoorManager : MonoBehaviour
{
private List<DoorHori> doors = new List<DoorHori>();
private bool doorLockState;
private void Start()
{
if (transform.parent != null)
{
Transform parent = transform.parent;
var children = parent.GetComponentsInChildren<Transform>();
if(children != null)
{
foreach (Transform door in children)
{
if (door.name == "Door_Left" || door.name == "Door_Right")
doors.Add(door.GetComponent<DoorHori>());
}
DoorsLockManager.GetDoors(doors);
}
}
}
void OnTriggerEnter()
{
if (doorLockState == false)
{
if (doors != null)
{
for(int i =0; i < doors.Count; i++)
{
doors[i].OpenDoor();
}
}
}
}
public void ChangeLockState(bool lockState)
{
doorLockState = lockState;
}
}
Проблема в том, что прежде чем он добавит все двери в список doorsLR в первом сценарии, первый сценарий уже выполнит его запуск.
Я хочу сначала получить все двери из HoriDoorManager и только потом выполнить Start в сценарии DoorsLockManager.
Я не хочу использовать теги. Я хочу получить каждые две двери из HoriDoorManager, добавить их в doorsLR, когда он завершит добавление всех дверей, а затем начать работать с ним в DoorsLockManager.