using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class DoorsLockManager : MonoBehaviour
{
[System.Serializable]
public class DoorClass
{
public HoriDoorManager Door;
public bool doorState;
public Transform[] DoorShieldFXLocked;
}
public bool allDoors = false;
public DoorClass[] doorclass;
private List<HoriDoorManager> Doors = new List<HoriDoorManager>();
private Renderer rend;
private Shader unlitcolor;
private List<GameObject> DoorShieldFXLocked = new List<GameObject>();
private void Start()
{
DoorShieldFXLocked = GameObject.FindGameObjectsWithTag("DoorShield").ToList();
unlitcolor = Shader.Find("Unlit/ShieldFX");
var doors = GameObject.FindGameObjectsWithTag("Door");
doorclass = new DoorClass[doors.Length];
for (int i = 0; i < doors.Length; i++)
{
Doors.Add(doors[i].GetComponent<HoriDoorManager>());
LockDoorState(i, allDoors);
doorclass[i] = new DoorClass();
doorclass[i].Door = Doors[i];
doorclass[i].doorState = allDoors;
}
}
我怎样才能遍历doorClass以及DoorShieldFXLocked。每个doorClass都有两个DoorShieldFXLocked项目。
例如:
doorClass1
DoorShieldFXLocked
DoorShieldFXLocked
doorClass2
DoorShieldFXLocked
DoorShieldFXLocked
在开始我需要为每个doorClass分配两个DoorShieldFXLocked到DoorShieldFXLocked Transform数组。
doorClass的大小为13(索引0到12),DoorShieldFXLocked列表大小为24(索引0到23)。
如果我们假设以下内容,则不需要遍历DoorShieldFXLocked
数组;简单的数学运作:
在doorClass[0]
,你需要使用DoorShieldFXLocked[0]
和DoorShieldFXLocked[1]
。
在doorClass[1]
,你需要使用DoorShieldFXLocked[2]
和DoorShieldFXLocked[3]
。等等
在这种情况下,你可以看到每对DoorShieldFXLocked
指数是2*i
和(2*i)+1
。
但是,如果您需要找到两个特定的门,则需要使用嵌套循环。
for (int i = 0; i < doors.Length; i++)
{
...
for (int j=0; j< DoorShieldFXLocked.Length; ++j)
{
//test and Add if needed
}
}