using Unity.MLAgents.Sensors; using UnityEngine; namespace Unity.MLAgents.Extensions.Match3 { /// /// Sensor component for a Match3 game. /// [AddComponentMenu("ML Agents/Match 3 Sensor", (int)MenuGroup.Sensors)] public class Match3SensorComponent : SensorComponent { /// /// Name of the generated Match3Sensor object. /// Note that changing this at runtime does not affect how the Agent sorts the sensors. /// public string SensorName = "Match3 Sensor"; /// /// Type of observation to generate. /// public Match3ObservationType ObservationType = Match3ObservationType.Vector; /// public override ISensor[] CreateSensors() { var board = GetComponent(); var cellSensor = Match3Sensor.CellTypeSensor(board, ObservationType, SensorName + " (cells)"); // This can be null if numSpecialTypes is 0 var specialSensor = Match3Sensor.SpecialTypeSensor(board, ObservationType, SensorName + " (special)"); return specialSensor != null ? new ISensor[] { cellSensor, specialSensor } : new ISensor[] { cellSensor }; } } }