private IEnumerator ShadowCaster() { colliderLayerTilemap.SetTile(Vector3Int.zero, null); yield return(null); //EditorApplication.ExecuteMenuItem("Tools/Generate Shadow Casters"); ShadowCaster2DGenerator.GenerateShadowCasters(); colliderLayerTilemap.SetTile(Vector3Int.zero, wallTile); // Костыли чтобы ShadowCaster2D не кидал тени на стены int layersCount = SortingLayer.layers.Length - 1; int[] layerWithoutWalls = new int[layersCount]; for (int layerIndex = 0; layerIndex < layersCount; layerIndex++) { if (SortingLayer.layers[layerIndex].name != "Walls") { layerWithoutWalls[layerIndex] = SortingLayer.layers[layerIndex].id; } } var shadowCaster2D = colliderLayerTilemap.GetComponentInChildren <ShadowCaster2D>(); // FieldInfo fieldInfo; // fieldInfo = shadowCaster2D.GetType().GetField("m_ApplyToSortingLayers", BindingFlags.Instance | BindingFlags.Instance); // fieldInfo.SetValue(shadowCaster2D, layerWithoutWalls); shadowCaster2D.GetType().GetField("m_ApplyToSortingLayers", BindingFlags.NonPublic | BindingFlags.Instance) .SetValue(shadowCaster2D, layerWithoutWalls); }
public static void GenerateTilesAndShadows() { GlobalInstanceManager.GetAssetManager().SetAndUpdate(); ShadowCaster2DGenerator.GenerateShadowCasters(); }
protected virtual void Awake() { ShadowCaster2DGenerator.GenerateTilemapShadowCasters(m_TilemapCollider, m_SelfShadows); }