Я работаю над проектом в единстве, который основан на тайловых картах, и мне нужно иметь возможность изменить всю тайловую карту сразу. Я знаю, что могу использовать SetColor для одной плитки, но это потребует лишнего кода, который я предпочел бы сократить. Мой код ниже прикреплен к тайловой карте, на которой я хочу уменьшить альфа-канал, когда мой персонаж находится в определенном месте. В настоящее время он делает это только для одной плитки с функцией SetColor.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;
public class houseController : MonoBehaviour
{
public GameObject player;
public Tilemap house;
// Start is called before the first frame update
void Start()
{
player = GameObject.Find("Player");
house = GetComponent<Tilemap>();
}
// Update is called once per frame
void Update()
{
Vector3 position = player.transform.position;
Vector3Int x = new Vector3Int(1, 10, 0);
Color color = new Vector4(1, 1, 1, 0.5f);
Color color2 = new Vector4(1, 1, 1, 1);
house.SetTileFlags(x, TileFlags.None);
if (position[0] > -5.3f)
{
if (position[0] < 4.2f)
{
if (position[1] > 12.3f)
{
if (position[1] < 18.2f)
{
house.SetColor(x, color);
}
else {
house.SetColor(x, color2);
}
}
else {
house.SetColor(x, color2);
}
}
else {
house.SetColor(x, color2);
}
}
else {
house.SetColor(x, color2);
}
}
}