Unity 机器学习代理工具包 (ML-Agents) 是一个开源项目,它使游戏和模拟能够作为训练智能代理的环境。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

55 行
1.9 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Linq;
/*
This code is meant to modify the behavior of the inspector on Brain Components.
Depending on the type of brain that is used, the available fields will be modified in the inspector accordingly.
*/
[CustomEditor (typeof(Brain))]
public class BrainEditor : Editor
{
public override void OnInspectorGUI ()
{
Brain myBrain = (Brain)target;
SerializedObject serializedBrain = new SerializedObject (target);
if (myBrain.transform.parent == null) {
EditorGUILayout.HelpBox ("A Brain GameObject myst be a child of an Academy GameObject!", MessageType.Error);
} else if (myBrain.transform.parent.GetComponent<Academy> () == null) {
EditorGUILayout.HelpBox ("The Parent of a Brain must have an Academy Component attached to it!", MessageType.Error);
}
SerializedProperty bp = serializedBrain.FindProperty ("brainParameters");
if (myBrain.brainParameters.actionDescriptions == null) {
myBrain.brainParameters.actionDescriptions = new string[myBrain.brainParameters.actionSize];
}
if (myBrain.brainParameters.actionSize != myBrain.brainParameters.actionDescriptions.Count()) {
myBrain.brainParameters.actionDescriptions = new string[myBrain.brainParameters.actionSize];
}
serializedBrain.Update ();
EditorGUILayout.PropertyField (bp, true);
serializedBrain.ApplyModifiedProperties ();
myBrain.brainType = (BrainType)EditorGUILayout.EnumPopup ("Type Of Brain ", myBrain.brainType);
if ((int)myBrain.brainType >= System.Enum.GetValues (typeof(BrainType)).Length) {
myBrain.brainType = BrainType.Player;
}
myBrain.UpdateCoreBrains ();
myBrain.coreBrain.OnInspector ();
#if !NET_4_6 && ENABLE_TENSORFLOW
EditorGUILayout.HelpBox ("You cannot have ENABLE_TENSORFLOW without NET_4_6", MessageType.Error);
#endif
}
}