ppo-Pyramids-Training
/
Project
/Assets
/ML-Agents
/Examples
/FoodCollector
/Scripts
/FoodCollectorSettings.cs
using UnityEngine; | |
using UnityEngine.UI; | |
using Unity.MLAgents; | |
public class FoodCollectorSettings : MonoBehaviour | |
{ | |
[ | ]|
public GameObject[] agents; | |
[ | ]|
public FoodCollectorArea[] listArea; | |
public int totalScore; | |
public Text scoreText; | |
StatsRecorder m_Recorder; | |
public void Awake() | |
{ | |
Academy.Instance.OnEnvironmentReset += EnvironmentReset; | |
m_Recorder = Academy.Instance.StatsRecorder; | |
} | |
void EnvironmentReset() | |
{ | |
ClearObjects(GameObject.FindGameObjectsWithTag("food")); | |
ClearObjects(GameObject.FindGameObjectsWithTag("badFood")); | |
agents = GameObject.FindGameObjectsWithTag("agent"); | |
listArea = FindObjectsOfType<FoodCollectorArea>(); | |
foreach (var fa in listArea) | |
{ | |
fa.ResetFoodArea(agents); | |
} | |
totalScore = 0; | |
} | |
void ClearObjects(GameObject[] objects) | |
{ | |
foreach (var food in objects) | |
{ | |
Destroy(food); | |
} | |
} | |
public void Update() | |
{ | |
scoreText.text = $"Score: {totalScore}"; | |
// Send stats via SideChannel so that they'll appear in TensorBoard. | |
// These values get averaged every summary_frequency steps, so we don't | |
// need to send every Update() call. | |
if ((Time.frameCount % 100) == 0) | |
{ | |
m_Recorder.Add("TotalScore", totalScore); | |
} | |
} | |
} | |