您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
58 行
1.4 KiB
58 行
1.4 KiB
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using Unity.MLAgents;
|
|
|
|
public class FoodCollectorSettings : MonoBehaviour
|
|
{
|
|
[HideInInspector]
|
|
public GameObject[] agents;
|
|
[HideInInspector]
|
|
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);
|
|
}
|
|
}
|
|
}
|