diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/DemonstrationTests.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/DemonstrationTests.cs index c3a49c923f..2e7d27cbf9 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/DemonstrationTests.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/DemonstrationTests.cs @@ -6,12 +6,22 @@ namespace MLAgents.Tests { + [TestFixture] public class DemonstrationTests : MonoBehaviour { const string k_DemoDirecory = "Assets/Demonstrations/"; const string k_ExtensionType = ".demo"; const string k_DemoName = "Test"; + [SetUp] + public void SetUp() + { + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + [Test] public void TestSanitization() { @@ -90,19 +100,12 @@ public void TestAgentWrite() demoRecorder.record = true; demoRecorder.InitializeDemoStore(fileSystem); - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); - - var academyInitializeMethod = typeof(Academy).GetMethod("InitializeEnvironment", - BindingFlags.Instance | BindingFlags.NonPublic); var agentEnableMethod = typeof(Agent).GetMethod("OnEnable", BindingFlags.Instance | BindingFlags.NonPublic); var agentSendInfo = typeof(Agent).GetMethod("SendInfo", BindingFlags.Instance | BindingFlags.NonPublic); agentEnableMethod?.Invoke(agent1, new object[] { }); - academyInitializeMethod?.Invoke(aca, new object[] { }); // Step the agent agent1.RequestDecision(); @@ -125,8 +128,6 @@ public void TestAgentWrite() Assert.AreEqual((float)i + 1, vecObs[i]); } } - - } } } diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/EditModeTestInternalBrainTensorGenerator.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/EditModeTestInternalBrainTensorGenerator.cs index 94d91b79c0..26bb9529b3 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/EditModeTestInternalBrainTensorGenerator.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/EditModeTestInternalBrainTensorGenerator.cs @@ -8,14 +8,20 @@ namespace MLAgents.Tests { + [TestFixture] public class EditModeTestInternalBrainTensorGenerator { - static List GetFakeAgents() + [SetUp] + public void SetUp() { - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + static List GetFakeAgents() + { var goA = new GameObject("goA"); var bpA = goA.AddComponent(); bpA.brainParameters.vectorObservationSize = 3; @@ -33,7 +39,7 @@ static List GetFakeAgents() { var agentEnableMethod = typeof(Agent).GetMethod("OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic); - agentEnableMethod?.Invoke(agent, new object[] { aca }); + agentEnableMethod?.Invoke(agent, new object[] { }); } agentA.collectObservationsSensor.AddObservation(new Vector3(1, 2, 3)); agentB.collectObservationsSensor.AddObservation(new Vector3(4, 5, 6)); diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs index b7f8678ee4..cbdfb902b0 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/MLAgentsEditModeTest.cs @@ -91,15 +91,22 @@ public string GetName() public void Update() { } } + [TestFixture] public class EditModeTestGeneration { + [SetUp] + public void SetUp() + { + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + [Test] public void TestAcademy() { - // Use the Assert class to test conditions. - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); + var aca = Academy.Instance; Assert.AreNotEqual(null, aca); Assert.AreEqual(0, aca.GetEpisodeCount()); Assert.AreEqual(0, aca.GetStepCount()); @@ -117,26 +124,50 @@ public void TestAgent() } } + [TestFixture] public class EditModeTestInitialization { + [SetUp] + public void SetUp() + { + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + [Test] public void TestAcademy() { - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); - Assert.AreEqual(0, aca.GetStepCount()); - Assert.AreEqual(0, aca.GetEpisodeCount()); - Assert.AreEqual(0, aca.GetTotalStepCount()); - Assert.AreEqual(null, aca.FloatProperties); - //This will call the method even though it is private - var academyInitializeMethod = typeof(Academy).GetMethod("InitializeEnvironment", - BindingFlags.Instance | BindingFlags.NonPublic); - academyInitializeMethod?.Invoke(aca, new object[] { }); + Assert.AreEqual(false, Academy.IsInitialized); + var aca = Academy.Instance; + Assert.AreEqual(true, Academy.IsInitialized); + + // Check that init is idempotent + aca.LazyInitialization(); + aca.LazyInitialization(); + Assert.AreEqual(0, aca.GetEpisodeCount()); Assert.AreEqual(0, aca.GetStepCount()); Assert.AreEqual(0, aca.GetTotalStepCount()); Assert.AreNotEqual(null, aca.FloatProperties); + + // Check that Dispose is idempotent + aca.Dispose(); + Assert.AreEqual(false, Academy.IsInitialized); + aca.Dispose(); + } + + [Test] + public void TestAcademyDispose() + { + var floatProperties1 = Academy.Instance.FloatProperties; + Academy.Instance.Dispose(); + + var floatProperties2 = Academy.Instance.FloatProperties; + Academy.Instance.Dispose(); + + Assert.AreNotEqual(floatProperties1, floatProperties2); } [Test] @@ -148,9 +179,6 @@ public void TestAgent() var agentGo2 = new GameObject("TestAgent"); agentGo2.AddComponent(); var agent2 = agentGo2.GetComponent(); - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); Assert.AreEqual(false, agent1.IsDone()); Assert.AreEqual(false, agent2.IsDone()); @@ -163,13 +191,9 @@ public void TestAgent() var agentEnableMethod = typeof(Agent).GetMethod("OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic); - var academyInitializeMethod = typeof(Academy).GetMethod("InitializeEnvironment", - BindingFlags.Instance | BindingFlags.NonPublic); - - agentEnableMethod?.Invoke(agent2, new object[] { aca }); - academyInitializeMethod?.Invoke(aca, new object[] { }); - agentEnableMethod?.Invoke(agent1, new object[] { aca }); + agentEnableMethod?.Invoke(agent2, new object[] { }); + agentEnableMethod?.Invoke(agent1, new object[] { }); Assert.AreEqual(false, agent1.IsDone()); Assert.AreEqual(false, agent2.IsDone()); @@ -188,20 +212,22 @@ public void TestAgent() } } + [TestFixture] public class EditModeTestStep { + [SetUp] + public void SetUp() + { + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + [Test] public void TestAcademy() { - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); - var academyInitializeMethod = typeof(Academy).GetMethod("InitializeEnvironment", - BindingFlags.Instance | BindingFlags.NonPublic); - academyInitializeMethod?.Invoke(aca, new object[] { }); - - var academyStepMethod = typeof(Academy).GetMethod("EnvironmentStep", - BindingFlags.Instance | BindingFlags.NonPublic); + var aca = Academy.Instance; var numberReset = 0; for (var i = 0; i < 10; i++) @@ -214,10 +240,21 @@ public void TestAcademy() { numberReset += 1; } - academyStepMethod?.Invoke(aca, new object[] { }); + Academy.Instance.EnvironmentStep(); } } + [Test] + public void TestAcademyAutostep() + { + var aca = Academy.Instance; + Assert.IsTrue(aca.IsAutomaticSteppingEnabled); + aca.DisableAutomaticStepping(true); + Assert.IsFalse(aca.IsAutomaticSteppingEnabled); + aca.EnableAutomaticStepping(); + Assert.IsTrue(aca.IsAutomaticSteppingEnabled); + } + [Test] public void TestAgent() { @@ -227,15 +264,11 @@ public void TestAgent() var agentGo2 = new GameObject("TestAgent"); agentGo2.AddComponent(); var agent2 = agentGo2.GetComponent(); - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); + var aca = Academy.Instance; var agentEnableMethod = typeof(Agent).GetMethod( "OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic); - var academyInitializeMethod = typeof(Academy).GetMethod( - "InitializeEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); agent1.agentParameters = new AgentParameters(); agent2.agentParameters = new AgentParameters(); @@ -246,11 +279,7 @@ public void TestAgent() agent2.agentParameters.onDemandDecision = true; // agent2 will request decisions only when RequestDecision is called - agentEnableMethod?.Invoke(agent1, new object[] { aca }); - academyInitializeMethod?.Invoke(aca, new object[] { }); - - var academyStepMethod = typeof(Academy).GetMethod( - "EnvironmentStep", BindingFlags.Instance | BindingFlags.NonPublic); + agentEnableMethod?.Invoke(agent1, new object[] { }); var numberAgent1Reset = 0; var numberAgent2Initialization = 0; @@ -275,7 +304,7 @@ public void TestAgent() //Agent 2 is only initialized at step 2 if (i == 2) { - agentEnableMethod?.Invoke(agent2, new object[] { aca }); + agentEnableMethod?.Invoke(agent2, new object[] { }); numberAgent2Initialization += 1; } @@ -294,25 +323,27 @@ public void TestAgent() requestAction += 1; agent2.RequestAction(); } - academyStepMethod?.Invoke(aca, new object[] { }); + aca.EnvironmentStep(); } } } + [TestFixture] public class EditModeTestReset { + [SetUp] + public void SetUp() + { + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + [Test] public void TestAcademy() { - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); - var academyInitializeMethod = typeof(Academy).GetMethod( - "InitializeEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); - academyInitializeMethod?.Invoke(aca, new object[] { }); - - var academyStepMethod = typeof(Academy).GetMethod( - "EnvironmentStep", BindingFlags.Instance | BindingFlags.NonPublic); + var aca = Academy.Instance; var numberReset = 0; var stepsSinceReset = 0; @@ -328,7 +359,7 @@ public void TestAcademy() } stepsSinceReset += 1; - academyStepMethod.Invoke(aca, new object[] { }); + aca.EnvironmentStep(); } } @@ -341,18 +372,11 @@ public void TestAgent() var agentGo2 = new GameObject("TestAgent"); agentGo2.AddComponent(); var agent2 = agentGo2.GetComponent(); - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); + var aca = Academy.Instance; var agentEnableMethod = typeof(Agent).GetMethod( "OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic); - var academyInitializeMethod = typeof(Academy).GetMethod( - "InitializeEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); - - var academyStepMethod = typeof(Academy).GetMethod( - "EnvironmentStep", BindingFlags.Instance | BindingFlags.NonPublic); agent1.agentParameters = new AgentParameters(); agent2.agentParameters = new AgentParameters(); @@ -362,8 +386,7 @@ public void TestAgent() // agent1 will take an action at every step and request a decision every 2 steps agent2.agentParameters.onDemandDecision = true; - agentEnableMethod?.Invoke(agent2, new object[] { aca }); - academyInitializeMethod?.Invoke(aca, new object[] { }); + agentEnableMethod?.Invoke(agent2, new object[] { }); var numberAgent1Reset = 0; var numberAgent2Reset = 0; @@ -390,7 +413,7 @@ public void TestAgent() //Agent 1 is only initialized at step 2 if (i == 2) { - agentEnableMethod?.Invoke(agent1, new object[] { aca }); + agentEnableMethod?.Invoke(agent1, new object[] { }); } // Set agent 1 to done every 11 steps to test behavior if (i % 11 == 5) @@ -429,13 +452,23 @@ public void TestAgent() //Agent 1 is only initialized at step 2 if (i < 2) { } - academyStepMethod?.Invoke(aca, new object[] { }); + aca.EnvironmentStep(); } } } + [TestFixture] public class EditModeTestMiscellaneous { + [SetUp] + public void SetUp() + { + if (Academy.IsInitialized) + { + Academy.Instance.Dispose(); + } + } + [Test] public void TestResetOnDone() { @@ -445,18 +478,11 @@ public void TestResetOnDone() var agentGo2 = new GameObject("TestAgent"); agentGo2.AddComponent(); var agent2 = agentGo2.GetComponent(); - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); + var aca = Academy.Instance; var agentEnableMethod = typeof(Agent).GetMethod( "OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic); - var academyInitializeMethod = typeof(Academy).GetMethod( - "InitializeEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); - - var academyStepMethod = typeof(Academy).GetMethod( - "EnvironmentStep", BindingFlags.Instance | BindingFlags.NonPublic); agent1.agentParameters = new AgentParameters(); agent2.agentParameters = new AgentParameters(); @@ -471,9 +497,8 @@ public void TestResetOnDone() agent1.agentParameters.resetOnDone = false; agent2.agentParameters.resetOnDone = false; - agentEnableMethod?.Invoke(agent2, new object[] { aca }); - academyInitializeMethod?.Invoke(aca, new object[] { }); - agentEnableMethod?.Invoke(agent1, new object[] { aca }); + agentEnableMethod?.Invoke(agent2, new object[] { }); + agentEnableMethod?.Invoke(agent1, new object[] { }); var agent1ResetOnDone = 0; var agent2ResetOnDone = 0; @@ -507,8 +532,7 @@ public void TestResetOnDone() agent2.Done(); } - - academyStepMethod?.Invoke(aca, new object[] { }); + aca.EnvironmentStep(); } } @@ -521,19 +545,10 @@ public void TestCumulativeReward() var agentGo2 = new GameObject("TestAgent"); agentGo2.AddComponent(); var agent2 = agentGo2.GetComponent(); - var acaGo = new GameObject("TestAcademy"); - acaGo.AddComponent(); - var aca = acaGo.GetComponent(); - + var aca = Academy.Instance; var agentEnableMethod = typeof(Agent).GetMethod( "OnEnableHelper", BindingFlags.Instance | BindingFlags.NonPublic); - var academyInitializeMethod = typeof(Academy).GetMethod( - "InitializeEnvironment", BindingFlags.Instance | BindingFlags.NonPublic); - - var academyStepMethod = typeof(Academy).GetMethod( - "EnvironmentStep", BindingFlags.Instance | BindingFlags.NonPublic); - agent1.agentParameters = new AgentParameters(); agent2.agentParameters = new AgentParameters(); // We use event based so the agent will now try to send anything to the brain @@ -544,9 +559,8 @@ public void TestCumulativeReward() // agent2 will request decisions only when RequestDecision is called agent1.agentParameters.maxStep = 20; - agentEnableMethod?.Invoke(agent2, new object[] { aca }); - academyInitializeMethod?.Invoke(aca, new object[] { }); - agentEnableMethod?.Invoke(agent1, new object[] { aca }); + agentEnableMethod?.Invoke(agent2, new object[] { }); + agentEnableMethod?.Invoke(agent1, new object[] { }); var j = 0; @@ -557,7 +571,7 @@ public void TestCumulativeReward() Assert.LessOrEqual(Mathf.Abs(i * 0.1f - agent2.GetCumulativeReward()), 0.05f); - academyStepMethod?.Invoke(aca, new object[] { }); + aca.EnvironmentStep(); agent1.AddReward(10f); if ((i % 21 == 0) && (i > 0)) diff --git a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs index b1ce13cc1a..7eca19ec7f 100644 --- a/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs +++ b/UnitySDK/Assets/ML-Agents/Editor/Tests/Sensor/WriterAdapterTests.cs @@ -89,8 +89,6 @@ public void TestWritesToTensor3D() data = new Tensor(2, 2, 2, 3) }; - var shape = new[] { 2, 2, 3 }; - writer.SetTarget(t, 0, 0); writer[1, 0, 1] = 1f; Assert.AreEqual(1f, t.data[0, 1, 0, 1]); diff --git a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBall.unity b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBall.unity index dfa6143002..29431e3890 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBall.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBall.unity @@ -856,10 +856,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1583402088} - - component: {fileID: 1583402089} - component: {fileID: 1583402090} m_Layer: 0 - m_Name: Ball3DAcademy + m_Name: Ball3DSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -880,18 +879,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1583402089 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1583402087} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!114 &1583402090 MonoBehaviour: m_ObjectHideFlags: 0 @@ -905,6 +892,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: gravityMultiplier: 1 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 diff --git a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallHard.unity b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallHard.unity index b82ddb3e03..dc3f72a9cb 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallHard.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallHard.unity @@ -13,7 +13,7 @@ OcclusionCullingSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 8 + serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -38,7 +38,8 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44971162, g: 0.49977726, b: 0.5756362, a: 1} + m_IndirectSpecularColor: {r: 0.4497121, g: 0.49977785, b: 0.57563704, a: 1} + m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 @@ -49,16 +50,14 @@ LightmapSettings: m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 - m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 9 + serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 - m_TextureWidth: 1024 - m_TextureHeight: 1024 + m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -114,207 +113,205 @@ NavMeshSettings: m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1001 &83714371 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (10) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 15 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (10) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &190841887 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (7) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 18 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 12 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (7) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &255414642 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 1537641056927260, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchoredPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMin.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMin.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMax.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_AnchorMax.y value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_Pivot.x value: 0 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, - type: 2} + type: 3} propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 1537641056927260, guid: 3ce107b4a79bc4eef83afde434932a68, type: 2} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} --- !u!1 &807556622 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 807556627} - component: {fileID: 807556626} @@ -331,34 +328,43 @@ GameObject: --- !u!81 &807556623 AudioListener: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 807556622} m_Enabled: 1 --- !u!124 &807556624 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 807556622} m_Enabled: 1 --- !u!92 &807556625 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 807556622} m_Enabled: 1 --- !u!20 &807556626 Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 807556622} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 2 m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -388,8 +394,9 @@ Camera: --- !u!4 &807556627 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 807556622} m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} m_LocalPosition: {x: 4.5, y: 15, z: -45} @@ -399,247 +406,243 @@ Transform: m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} --- !u!1001 &1039166859 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (9) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 14 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (9) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1143000664 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (1) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 6 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (1) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1325563966 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (2) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 18 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 7 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (2) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1448943179 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (8) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 13 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (8) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1515863672 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (5) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 10 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (5) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1 &1583402087 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1408885610532680, guid: 00a1ebe742cf2394d8c21484e3a02412, + m_CorrespondingSourceObject: {fileID: 1408885610532680, guid: 00a1ebe742cf2394d8c21484e3a02412, type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1583402088} - component: {fileID: 1583402089} m_Layer: 0 - m_Name: Ball3DHardAcademy + m_Name: Ball3DHardSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -648,9 +651,10 @@ GameObject: --- !u!4 &1583402088 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4673284961943764, guid: 00a1ebe742cf2394d8c21484e3a02412, + m_CorrespondingSourceObject: {fileID: 4673284961943764, guid: 00a1ebe742cf2394d8c21484e3a02412, type: 2} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1583402087} m_LocalRotation: {x: -0.069583125, y: 0.0049145464, z: 0.0702813, w: 0.99508524} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -662,182 +666,163 @@ Transform: --- !u!114 &1583402089 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 114659680214172868, guid: 00a1ebe742cf2394d8c21484e3a02412, - type: 2} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1583402087} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: eb15e3c3d55e54abaafb74c635b6a458, type: 3} + m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - broadcastHub: - brainsToControl: - - {fileID: 11400000, guid: 4f74e089fbb75455ebf6f0495e30be6e, type: 2} - m_TrainingConfiguration: - width: 300 - height: 200 - qualityLevel: 0 - timeScale: 20 - targetFrameRate: 60 - m_InferenceConfiguration: - width: 1280 - height: 720 - qualityLevel: 5 - timeScale: 1 - targetFrameRate: -1 - resetParameters: - m_ResetParameters: - - key: mass - value: 1 - - key: gravity - value: 9.81 - - key: scale - value: 1 + gravityMultiplier: 1 + monitorVerticalOffset: 0 + fixedDeltaTime: 0.02 + maximumDeltaTime: 0.33333334 + solverIterations: 6 + solverVelocityIterations: 1 --- !u!1001 &1682693182 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (4) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 9 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (4) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1685621577 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (6) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 11 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (6) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1697057007 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (11) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 18 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 16 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (11) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1 &1746325439 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - component: {fileID: 1746325442} - component: {fileID: 1746325441} @@ -852,8 +837,9 @@ GameObject: --- !u!114 &1746325440 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1746325439} m_Enabled: 1 m_EditorHideFlags: 0 @@ -870,8 +856,9 @@ MonoBehaviour: --- !u!114 &1746325441 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1746325439} m_Enabled: 1 m_EditorHideFlags: 0 @@ -884,8 +871,9 @@ MonoBehaviour: --- !u!4 &1746325442 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1746325439} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -895,136 +883,133 @@ Transform: m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1862302804 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} + propertyPath: m_Name + value: 3DBallHardPlatformNew (3) + objectReference: {fileID: 0} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: -9 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 8 objectReference: {fileID: 0} - - target: {fileID: 1753668517859216, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - propertyPath: m_Name - value: 3DBallHardPlatformNew (3) - objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} --- !u!1001 &1916479629 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.x value: 0.31598538 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.y value: -0.3596048 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.z value: 0.13088542 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalRotation.w value: 0.8681629 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} + - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: -45 objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} --- !u!1001 &2117091534 -Prefab: +PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalPosition.z value: 5 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} + - target: {fileID: 4133146672945188, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} propertyPath: m_RootOrder value: 5 objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 2} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: 0d8ebd51939eb45c88531e9d444bca28, type: 3} diff --git a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgent.cs index 8207a506c3..fb2b8ef86c 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DAgent.cs @@ -11,8 +11,7 @@ public class Ball3DAgent : Agent public override void InitializeAgent() { m_BallRb = ball.GetComponent(); - var academy = FindObjectOfType(); - m_ResetParams = academy.FloatProperties; + m_ResetParams = Academy.Instance.FloatProperties; SetResetParameters(); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DHardAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DHardAgent.cs index 0933739a13..b7421144e0 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DHardAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/3DBall/Scripts/Ball3DHardAgent.cs @@ -11,8 +11,7 @@ public class Ball3DHardAgent : Agent public override void InitializeAgent() { m_BallRb = ball.GetComponent(); - var academy = FindObjectOfType(); - m_ResetParams = academy.FloatProperties; + m_ResetParams = Academy.Instance.FloatProperties; SetResetParameters(); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/Basic/Scenes/Basic.unity b/UnitySDK/Assets/ML-Agents/Examples/Basic/Scenes/Basic.unity index a1b2b3185c..dc9f39ca7f 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Basic/Scenes/Basic.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Basic/Scenes/Basic.unity @@ -198,7 +198,7 @@ PrefabInstance: - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} propertyPath: m_RootOrder - value: 4 + value: 3 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} @@ -252,49 +252,6 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} ---- !u!1 &1574236047 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1574236049} - - component: {fileID: 1574236048} - m_Layer: 0 - m_Name: Academy - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1574236048 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1574236049 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.71938086, y: 0.27357092, z: 4.1970553} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1715640920 GameObject: m_ObjectHideFlags: 0 @@ -440,3 +397,52 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c5eb289873aca4f5a8cc59c7464ab7c1, type: 3} +--- !u!1 &1889211226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1889211228} + - component: {fileID: 1889211227} + m_Layer: 0 + m_Name: BasicSettings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1889211227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1889211226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} + m_Name: + m_EditorClassIdentifier: + gravityMultiplier: 1 + monitorVerticalOffset: 0 + fixedDeltaTime: 0.02 + maximumDeltaTime: 0.33333334 + solverIterations: 6 + solverVelocityIterations: 1 +--- !u!4 &1889211228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1889211226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/UnitySDK/Assets/ML-Agents/Examples/Basic/Scripts/BasicAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/Basic/Scripts/BasicAgent.cs index 5b236d214a..9dc6cc918a 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Basic/Scripts/BasicAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/Basic/Scripts/BasicAgent.cs @@ -4,7 +4,6 @@ public class BasicAgent : Agent { [Header("Specific to Basic")] - Academy m_Academy; public float timeBetweenDecisionsAtInference; float m_TimeSinceDecision; int m_Position; @@ -17,7 +16,6 @@ public class BasicAgent : Agent public override void InitializeAgent() { - m_Academy = FindObjectOfType(typeof(Academy)) as Academy; } public override void CollectObservations() @@ -97,7 +95,7 @@ public void FixedUpdate() void WaitTimeInference() { - if (!m_Academy.IsCommunicatorOn) + if (!Academy.Instance.IsCommunicatorOn) { RequestDecision(); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scenes/Bouncer.unity b/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scenes/Bouncer.unity index 1bb16db553..1c2f36b919 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scenes/Bouncer.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scenes/Bouncer.unity @@ -802,10 +802,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1453982295} - - component: {fileID: 1453982296} - component: {fileID: 1453982294} m_Layer: 0 - m_Name: Academy + m_Name: BouncerSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -824,6 +823,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: gravityMultiplier: 2 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -842,18 +842,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1453982296 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1453982293} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1526996927 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scripts/BouncerAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scripts/BouncerAgent.cs index 163ef8c7c6..0266501c62 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scripts/BouncerAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/Bouncer/Scripts/BouncerAgent.cs @@ -20,8 +20,7 @@ public override void InitializeAgent() m_Rb = gameObject.GetComponent(); m_LookDir = Vector3.zero; - var academy = FindObjectOfType(); - m_ResetParams = academy.FloatProperties; + m_ResetParams = Academy.Instance.FloatProperties; SetResetParameters(); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerDynamicTarget.unity b/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerDynamicTarget.unity index 2bf0365c37..618a5b3486 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerDynamicTarget.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerDynamicTarget.unity @@ -1294,10 +1294,9 @@ GameObject: m_Component: - component: {fileID: 2095421679} - component: {fileID: 2095421681} - - component: {fileID: 2095421682} - component: {fileID: 2095421680} m_Layer: 0 - m_Name: Academy + m_Name: CrawlerSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1329,8 +1328,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 1 gravityMultiplier: 1 + monitorVerticalOffset: 1 fixedDeltaTime: 0.01333 maximumDeltaTime: 0.15 solverIterations: 12 @@ -1347,15 +1346,3 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3d6f3eab3776b4fb79724ac4216dfd7b, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &2095421682 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2095421678} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerStaticTarget.unity b/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerStaticTarget.unity index 50bbfa86ae..da055989fb 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerStaticTarget.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Crawler/Scenes/CrawlerStaticTarget.unity @@ -1314,10 +1314,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 2095421679} - - component: {fileID: 2095421681} - component: {fileID: 2095421680} m_Layer: 0 - m_Name: Academy + m_Name: CrawlerSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1349,24 +1348,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 1 gravityMultiplier: 1 + monitorVerticalOffset: 1 fixedDeltaTime: 0.01333 maximumDeltaTime: 0.15 solverIterations: 12 solverVelocityIterations: 12 ---- !u!114 &2095421681 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2095421678} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &2129505181 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/FoodCollector.unity b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/FoodCollector.unity index e338c7b86e..61fca7afc6 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/FoodCollector.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/FoodCollector.unity @@ -733,10 +733,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236051} - component: {fileID: 1574236048} m_Layer: 0 - m_Name: Academy + m_Name: FoodCollectorSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -772,18 +771,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1574236051 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &1799584680 GameObject: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/VisualFoodCollector.unity b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/VisualFoodCollector.unity index 1d2de76275..d5b044c6e3 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/VisualFoodCollector.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scenes/VisualFoodCollector.unity @@ -634,10 +634,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236050} - component: {fileID: 1574236048} m_Layer: 0 - m_Name: Academy + m_Name: FoodCollectorSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -673,18 +672,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1574236050 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &1799584680 GameObject: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorAgent.cs index 673c2ec9ce..3a34b2a4a2 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorAgent.cs @@ -4,7 +4,6 @@ public class FoodCollectorAgent : Agent { FoodCollectorSettings m_FoodCollecterSettings; - Academy m_Academy; public GameObject area; FoodCollectorArea m_MyArea; bool m_Frozen; @@ -36,7 +35,6 @@ public override void InitializeAgent() Monitor.verticalOffset = 1f; m_MyArea = area.GetComponent(); m_FoodCollecterSettings = FindObjectOfType(); - m_Academy = FindObjectOfType(); SetResetParameters(); } @@ -279,12 +277,12 @@ public override void AgentOnDone() public void SetLaserLengths() { - m_LaserLength = m_Academy.FloatProperties.GetPropertyWithDefault("laser_length", 1.0f); + m_LaserLength = Academy.Instance.FloatProperties.GetPropertyWithDefault("laser_length", 1.0f); } public void SetAgentScale() { - float agentScale = m_Academy.FloatProperties.GetPropertyWithDefault("agent_scale", 1.0f); + float agentScale = Academy.Instance.FloatProperties.GetPropertyWithDefault("agent_scale", 1.0f); gameObject.transform.localScale = new Vector3(agentScale, agentScale, agentScale); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorSettings.cs b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorSettings.cs index 2ec0b035e2..922ee64edb 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorSettings.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Scripts/FoodCollectorSettings.cs @@ -15,9 +15,7 @@ public class FoodCollectorSettings : MonoBehaviour public void Awake() { - var academy = FindObjectOfType(); - academy.LazyInitialization(); - academy.OnEnvironmentReset += EnvironmentReset; + Academy.Instance.OnEnvironmentReset += EnvironmentReset; } public void EnvironmentReset() diff --git a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity index 29dfe95689..776c22e36c 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scenes/GridWorld.unity @@ -122,10 +122,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 2047664} - - component: {fileID: 2047665} - component: {fileID: 2047663} m_Layer: 0 - m_Name: GridAcademy + m_Name: GridSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -158,18 +157,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2047665 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2047662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &99095112 GameObject: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridAgent.cs index 10d2d45ae1..2027cbb077 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridAgent.cs @@ -6,7 +6,6 @@ public class GridAgent : Agent { - Academy m_Academy; [FormerlySerializedAs("m_Area")] [Header("Specific to GridWorld")] public GridArea area; @@ -30,7 +29,6 @@ public class GridAgent : Agent public override void InitializeAgent() { - m_Academy = FindObjectOfType(); } public override void CollectObservations() @@ -53,7 +51,7 @@ void SetMask() // Prevents the agent from picking an action that would make it collide with a wall var positionX = (int)transform.position.x; var positionZ = (int)transform.position.z; - var maxPosition = (int)m_Academy.FloatProperties.GetPropertyWithDefault("gridSize", 5f) - 1; + var maxPosition = (int)Academy.Instance.FloatProperties.GetPropertyWithDefault("gridSize", 5f) - 1; if (positionX == 0) { @@ -162,7 +160,7 @@ void WaitTimeInference() renderCamera.Render(); } - if (m_Academy.IsCommunicatorOn) + if (Academy.Instance.IsCommunicatorOn) { RequestDecision(); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridArea.cs b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridArea.cs index 14ed1e7310..0324e49727 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridArea.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridArea.cs @@ -31,7 +31,7 @@ public class GridArea : MonoBehaviour public void Start() { - m_ResetParameters = FindObjectOfType().FloatProperties; + m_ResetParameters = Academy.Instance.FloatProperties; m_Objects = new[] { goalPref, pitPref }; diff --git a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridSettings.cs b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridSettings.cs index f9c2ec8dc6..500c847aca 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridSettings.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/GridWorld/Scripts/GridSettings.cs @@ -7,9 +7,7 @@ public class GridSettings : MonoBehaviour public void Awake() { - var academy = FindObjectOfType(); - academy.LazyInitialization(); - academy.FloatProperties.RegisterCallback("gridSize", f => + Academy.Instance.FloatProperties.RegisterCallback("gridSize", f => { MainCamera.transform.position = new Vector3(-(f - 1) / 2f, f * 1.25f, -(f - 1) / 2f); MainCamera.orthographicSize = (f + 5f) / 2f; diff --git a/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/Hallway.unity b/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/Hallway.unity index c006e141b6..4c14268a0f 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/Hallway.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/Hallway.unity @@ -1125,11 +1125,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236052} - component: {fileID: 1574236051} - component: {fileID: 1574236050} m_Layer: 0 - m_Name: Academy + m_Name: HallwaySettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1161,8 +1160,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 2 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -1183,18 +1182,6 @@ MonoBehaviour: agentRotationSpeed: 1 goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2} failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2} ---- !u!114 &1574236052 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1781369655 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/VisualHallway.unity b/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/VisualHallway.unity index 6f4e856d90..1a2c2c857e 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/VisualHallway.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Hallway/Scenes/VisualHallway.unity @@ -862,11 +862,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236052} - component: {fileID: 1574236051} - component: {fileID: 1574236050} m_Layer: 0 - m_Name: Academy + m_Name: VisualHallwaySettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -898,8 +897,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 2 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -920,18 +919,6 @@ MonoBehaviour: agentRotationSpeed: 1 goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2} failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2} ---- !u!114 &1574236052 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1746153506 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlock.unity b/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlock.unity index a8d3899640..7b3df040ed 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlock.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlock.unity @@ -1646,11 +1646,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236051} - component: {fileID: 1574236050} - component: {fileID: 1574236048} m_Layer: 0 - m_Name: Academy + m_Name: PushBlockSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1668,8 +1667,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 2.5 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -1705,18 +1704,6 @@ MonoBehaviour: spawnAreaMarginMultiplier: 0.5 goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2} failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2} ---- !u!114 &1574236051 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1646905052 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/VisualPushBlock.unity b/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/VisualPushBlock.unity index 596e60d90d..67b4b7cc3d 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/VisualPushBlock.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scenes/VisualPushBlock.unity @@ -651,11 +651,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236051} - component: {fileID: 1574236050} - component: {fileID: 1574236048} m_Layer: 0 - m_Name: Academy + m_Name: PushBlockSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -673,8 +672,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 2.5 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -710,18 +709,6 @@ MonoBehaviour: spawnAreaMarginMultiplier: 0.5 goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2} failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2} ---- !u!114 &1574236051 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1878756099 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentBasic.cs b/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentBasic.cs index 2e7543b62d..1b86302a8c 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentBasic.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentBasic.cs @@ -20,7 +20,6 @@ public class PushAgentBasic : Agent public Bounds areaBounds; PushBlockSettings m_PushBlockSettings; - Academy m_Academy; /// /// The goal to push the block to. @@ -51,7 +50,6 @@ public class PushAgentBasic : Agent void Awake() { - m_Academy = FindObjectOfType(); //cache the academy m_PushBlockSettings = FindObjectOfType(); } @@ -228,7 +226,7 @@ public override void AgentReset() public void SetGroundMaterialFriction() { - var resetParams = m_Academy.FloatProperties; + var resetParams = Academy.Instance.FloatProperties; var groundCollider = ground.GetComponent(); @@ -238,7 +236,7 @@ public void SetGroundMaterialFriction() public void SetBlockProperties() { - var resetParams = m_Academy.FloatProperties; + var resetParams = Academy.Instance.FloatProperties; var scale = resetParams.GetPropertyWithDefault("block_scale", 2); //Set the scale of the block diff --git a/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/Pyramids.unity b/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/Pyramids.unity index c245dac851..27a9aa08b9 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/Pyramids.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/Pyramids.unity @@ -154,7 +154,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 17 + value: 16 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -199,7 +199,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 13 + value: 12 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -248,7 +248,7 @@ PrefabInstance: - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} propertyPath: m_RootOrder - value: 20 + value: 19 objectReference: {fileID: 0} - target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3} @@ -343,7 +343,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 6 + value: 5 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -388,7 +388,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 5 + value: 4 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -433,7 +433,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 8 + value: 7 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -478,7 +478,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 18 + value: 17 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -546,7 +546,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &520016803 PrefabInstance: @@ -589,7 +589,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 10 + value: 9 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -634,7 +634,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 16 + value: 15 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -679,7 +679,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 12 + value: 11 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -811,7 +811,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 7 + value: 6 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -856,7 +856,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 14 + value: 13 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -897,7 +897,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} propertyPath: m_RootOrder - value: 2 + value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3} @@ -946,7 +946,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 9 + value: 8 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -997,53 +997,10 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 15 + value: 14 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} ---- !u!1 &1574236047 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1574236049} - - component: {fileID: 1574236048} - m_Layer: 0 - m_Name: Academy - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1574236048 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1574236049 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.71938086, y: 0.27357092, z: 4.1970553} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1613855850 PrefabInstance: m_ObjectHideFlags: 0 @@ -1085,7 +1042,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 19 + value: 18 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -1130,7 +1087,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 11 + value: 10 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} @@ -1171,7 +1128,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4603070702628152, guid: bd804431e808a492bb5658bcd296e58e, type: 3} propertyPath: m_RootOrder - value: 4 + value: 3 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bd804431e808a492bb5658bcd296e58e, type: 3} diff --git a/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/VisualPyramids.unity b/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/VisualPyramids.unity index 04a93aacb6..3ab660a40f 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/VisualPyramids.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Pyramids/Scenes/VisualPyramids.unity @@ -150,7 +150,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 5 + value: 4 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -205,7 +205,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 10 + value: 9 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -259,7 +259,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 11 + value: 10 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -377,7 +377,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &714012435 PrefabInstance: @@ -424,7 +424,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 8 + value: 7 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -478,7 +478,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 6 + value: 5 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -629,7 +629,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 7 + value: 6 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -650,49 +650,6 @@ Camera: type: 3} m_PrefabInstance: {fileID: 714012435} m_PrefabAsset: {fileID: 0} ---- !u!1 &1574236047 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1574236049} - - component: {fileID: 1574236048} - m_Layer: 0 - m_Name: Academy - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1574236048 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &1574236049 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.71938086, y: 0.27357092, z: 4.1970553} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1728325040 PrefabInstance: m_ObjectHideFlags: 0 @@ -738,7 +695,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 12 + value: 11 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} @@ -792,7 +749,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4502082515322846, guid: 0567215293abe487b932aec366b57c8e, type: 3} propertyPath: m_RootOrder - value: 9 + value: 8 objectReference: {fileID: 0} - target: {fileID: 114538851081060382, guid: 0567215293abe487b932aec366b57c8e, type: 3} diff --git a/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scenes/Reacher.unity b/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scenes/Reacher.unity index 524689329f..6c624ed7e1 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scenes/Reacher.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scenes/Reacher.unity @@ -1242,27 +1242,14 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236048} - component: {fileID: 1574236050} m_Layer: 0 - m_Name: Academy + m_Name: ReacherAcademy m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1574236048 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!4 &1574236049 Transform: m_ObjectHideFlags: 0 @@ -1289,8 +1276,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 1 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 diff --git a/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scripts/ReacherAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scripts/ReacherAgent.cs index 6029d7d61b..c8837b1e96 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scripts/ReacherAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/Reacher/Scripts/ReacherAgent.cs @@ -7,7 +7,6 @@ public class ReacherAgent : Agent public GameObject pendulumB; public GameObject hand; public GameObject goal; - Academy m_MyAcademy; float m_GoalDegree; Rigidbody m_RbA; Rigidbody m_RbB; @@ -28,7 +27,6 @@ public override void InitializeAgent() { m_RbA = pendulumA.GetComponent(); m_RbB = pendulumB.GetComponent(); - m_MyAcademy = GameObject.Find("Academy").GetComponent(); SetResetParameters(); } @@ -110,7 +108,7 @@ public override void AgentReset() public void SetResetParameters() { - var fp = m_MyAcademy.FloatProperties; + var fp = Academy.Instance.FloatProperties; m_GoalSize = fp.GetPropertyWithDefault("goal_size", 5); m_GoalSpeed = Random.Range(-1f, 1f) * fp.GetPropertyWithDefault("goal_speed", 1); m_Deviation = fp.GetPropertyWithDefault("deviation", 0); diff --git a/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/ProjectSettingsOverrides.cs b/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/ProjectSettingsOverrides.cs index 8951e89c21..925eb1b12b 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/ProjectSettingsOverrides.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/SharedAssets/Scripts/ProjectSettingsOverrides.cs @@ -45,10 +45,7 @@ public void Awake() Physics.defaultSolverIterations = solverIterations; Physics.defaultSolverVelocityIterations = solverVelocityIterations; - var academy = FindObjectOfType(); - academy.LazyInitialization(); - - academy.FloatProperties.RegisterCallback("gravity", f => { Physics.gravity = new Vector3(0, -f, 0); }); + Academy.Instance.FloatProperties.RegisterCallback("gravity", f => { Physics.gravity = new Vector3(0, -f, 0); }); } public void OnDestroy() diff --git a/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity b/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity index ffe1e6afa6..1f3f11a677 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity @@ -642,11 +642,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236052} - component: {fileID: 1574236051} - component: {fileID: 1574236050} m_Layer: 0 - m_Name: Academy + m_Name: SoccerSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -678,8 +677,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 1 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -704,18 +703,6 @@ MonoBehaviour: strikerReward: 1 goaliePunish: -1 goalieReward: 0.1 ---- !u!114 &1574236052 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1606160104 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scripts/SoccerFieldArea.cs b/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scripts/SoccerFieldArea.cs index 1522e20f89..1a66a507c3 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scripts/SoccerFieldArea.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/Soccer/Scripts/SoccerFieldArea.cs @@ -34,7 +34,6 @@ public class SoccerFieldArea : MonoBehaviour Renderer m_GroundRenderer; SoccerSettings m_SoccerSettings; - Academy m_Academy; public IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time) { @@ -46,7 +45,6 @@ public IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time) void Awake() { m_SoccerSettings = FindObjectOfType(); - m_Academy = FindObjectOfType(); m_GroundRenderer = centerPitch.GetComponent(); m_GroundMaterial = m_GroundRenderer.material; canResetBall = true; @@ -161,7 +159,7 @@ public void ResetBall() ballRb.velocity = Vector3.zero; ballRb.angularVelocity = Vector3.zero; - var ballScale = m_Academy.FloatProperties.GetPropertyWithDefault("ball_scale", 0.015f); + var ballScale = Academy.Instance.FloatProperties.GetPropertyWithDefault("ball_scale", 0.015f); ballRb.transform.localScale = new Vector3(ballScale, ballScale, ballScale); } } diff --git a/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scenes/Tennis.unity b/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scenes/Tennis.unity index f4de7be78f..7209e861c5 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scenes/Tennis.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scenes/Tennis.unity @@ -701,10 +701,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1022397857} - - component: {fileID: 1022397859} - component: {fileID: 1022397858} m_Layer: 0 - m_Name: Academy + m_Name: TennisSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -736,24 +735,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 1 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 solverVelocityIterations: 1 ---- !u!114 &1022397859 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1022397856} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1065879750 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scripts/TennisAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scripts/TennisAgent.cs index 94e4c4085b..c967f025bc 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scripts/TennisAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/Tennis/Scripts/TennisAgent.cs @@ -30,8 +30,7 @@ public override void InitializeAgent() m_BallRb = ball.GetComponent(); var canvas = GameObject.Find(k_CanvasName); GameObject scoreBoard; - var academy = FindObjectOfType(); - m_ResetParams = academy.FloatProperties; + m_ResetParams = Academy.Instance.FloatProperties; if (invertX) { scoreBoard = canvas.transform.Find(k_ScoreBoardBName).gameObject; diff --git a/UnitySDK/Assets/ML-Agents/Examples/Walker/Scenes/Walker.unity b/UnitySDK/Assets/ML-Agents/Examples/Walker/Scenes/Walker.unity index ec51844180..d83f348643 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Walker/Scenes/Walker.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/Walker/Scenes/Walker.unity @@ -775,11 +775,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1409355322} - - component: {fileID: 1409355324} - component: {fileID: 1409355323} - component: {fileID: 1409355321} m_Layer: 0 - m_Name: WalkerAcademy + m_Name: WalkerSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -797,8 +796,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 1 gravityMultiplier: 1 + monitorVerticalOffset: 1 fixedDeltaTime: 0.01333 maximumDeltaTime: 0.15 solverIterations: 12 @@ -829,18 +828,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3d6f3eab3776b4fb79724ac4216dfd7b, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &1409355324 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409355320} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1427385246 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/Walker/Scripts/WalkerAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/Walker/Scripts/WalkerAgent.cs index 5ba07eec9b..bb2d6b0400 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/Walker/Scripts/WalkerAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/Walker/Scripts/WalkerAgent.cs @@ -59,8 +59,7 @@ public override void InitializeAgent() m_ChestRb = chest.GetComponent(); m_SpineRb = spine.GetComponent(); - var academy = FindObjectOfType(); - m_ResetParams = academy.FloatProperties; + m_ResetParams = Academy.Instance.FloatProperties; SetResetParameters(); } diff --git a/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scenes/WallJump.unity b/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scenes/WallJump.unity index 1128019f98..123378e59b 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scenes/WallJump.unity +++ b/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scenes/WallJump.unity @@ -1303,11 +1303,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1574236049} - - component: {fileID: 1574236052} - component: {fileID: 1574236051} - component: {fileID: 1574236048} m_Layer: 0 - m_Name: Academy + m_Name: WallJumpSettings m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1325,8 +1324,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3} m_Name: m_EditorClassIdentifier: - monitorVerticalOffset: 0 gravityMultiplier: 2.75 + monitorVerticalOffset: 0 fixedDeltaTime: 0.02 maximumDeltaTime: 0.33333334 solverIterations: 6 @@ -1363,18 +1362,6 @@ MonoBehaviour: failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2} agentJumpVelocity: 777 agentJumpVelocityMaxChange: 10 ---- !u!114 &1574236052 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574236047} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b1fc0029fee784d9cb9854f8912bfd07, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1001 &1813512988 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs b/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs index 8fcd49879b..fa02fb15e3 100644 --- a/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs +++ b/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs @@ -29,7 +29,6 @@ public class WallJumpAgent : Agent Rigidbody m_AgentRb; Material m_GroundMaterial; Renderer m_GroundRenderer; - Academy m_Academy; WallJumpSettings m_WallJumpSettings; public float jumpingTime; @@ -44,7 +43,6 @@ public class WallJumpAgent : Agent public override void InitializeAgent() { - m_Academy = FindObjectOfType(); m_WallJumpSettings = FindObjectOfType(); m_Configuration = Random.Range(0, 5); @@ -314,7 +312,7 @@ void ConfigureAgent(int config) { localScale = new Vector3( localScale.x, - m_Academy.FloatProperties.GetPropertyWithDefault("no_wall_height", 0), + Academy.Instance.FloatProperties.GetPropertyWithDefault("no_wall_height", 0), localScale.z); wall.transform.localScale = localScale; GiveModel("SmallWallJump", noWallBrain); @@ -323,15 +321,15 @@ void ConfigureAgent(int config) { localScale = new Vector3( localScale.x, - m_Academy.FloatProperties.GetPropertyWithDefault("small_wall_height", 4), + Academy.Instance.FloatProperties.GetPropertyWithDefault("small_wall_height", 4), localScale.z); wall.transform.localScale = localScale; GiveModel("SmallWallJump", smallWallBrain); } else { - var min = m_Academy.FloatProperties.GetPropertyWithDefault("big_wall_min_height", 8); - var max = m_Academy.FloatProperties.GetPropertyWithDefault("big_wall_max_height", 8); + var min = Academy.Instance.FloatProperties.GetPropertyWithDefault("big_wall_min_height", 8); + var max = Academy.Instance.FloatProperties.GetPropertyWithDefault("big_wall_max_height", 8); var height = min + Random.value * (max - min); localScale = new Vector3( localScale.x, diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs b/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs index aaecfb03a6..93bad79bce 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; using System.Collections.Generic; #if UNITY_EDITOR @@ -21,10 +22,19 @@ namespace MLAgents { + /// + /// Helper class to step the Academy during FixedUpdate phase. + /// + public class AcademyFixedUpdateStepper : MonoBehaviour + { + void FixedUpdate() + { + Academy.Instance.EnvironmentStep(); + } + } + /// /// An Academy is where Agent objects go to train their behaviors. - /// Currently, this class is expected to be extended to - /// implement the desired academy behavior. /// /// /// When an academy is run, it can either be in inference or training mode. @@ -37,11 +47,21 @@ namespace MLAgents /// [HelpURL("https://github.com/Unity-Technologies/ml-agents/blob/master/" + "docs/Learning-Environment-Design-Academy.md")] - public class Academy : MonoBehaviour + public class Academy : IDisposable { const string k_ApiVersion = "API-13"; const int k_EditorTrainingPort = 5004; + // Lazy initializer pattern, see https://csharpindepth.com/articles/singleton#lazy + static Lazy lazy = new Lazy(() => new Academy()); + + public static bool IsInitialized + { + get { return lazy.IsValueCreated; } + } + + public static Academy Instance { get { return lazy.Value; } } + public IFloatProperties FloatProperties; @@ -64,7 +84,7 @@ public bool IsCommunicatorOn /// The number of steps completed within the current episode. Incremented /// each time a step is taken in the environment. Is reset to 0 during - /// . + /// . int m_StepCount; /// The number of total number of steps completed during the whole simulation. Incremented @@ -118,17 +138,27 @@ public bool IsCommunicatorOn // Signals that the Academy has been reset by the training process public event System.Action OnEnvironmentReset; + AcademyFixedUpdateStepper m_FixedUpdateStepper; + GameObject m_StepperObject; + + /// - /// MonoBehavior function called at the very beginning of environment - /// creation. Academy uses this time to initialize internal data + /// Private constructor called the first time the Academy is used. + /// Academy uses this time to initialize internal data /// structures, initialize the environment and check for the existence /// of a communicator. /// - void Awake() + Academy() { + Application.quitting += Dispose; + LazyInitialization(); } + /// + /// Initialize the Academy if it hasn't already been initialized. + /// This method is always safe to call; it will have no effect if the Academy is already initialized. + /// public void LazyInitialization() { if (!m_Initialized) @@ -138,10 +168,59 @@ public void LazyInitialization() } } + /// + /// Enable stepping of the Academy during the FixedUpdate phase. This is done by creating a temporary + /// GameObject with a MonoBehavior that calls Academy.EnvironmentStep(). + /// + public void EnableAutomaticStepping() + { + if (m_FixedUpdateStepper != null) + { + return; + } + + m_StepperObject = new GameObject("AcademyFixedUpdateStepper"); + // Don't show this object in the hierarchy + m_StepperObject.hideFlags = HideFlags.HideInHierarchy; + m_FixedUpdateStepper = m_StepperObject.AddComponent(); + } + + /// + /// Disable stepping of the Academy during the FixedUpdate phase. If this is called, the Academy must be + /// stepped manually by the user by calling Academy.EnvironmentStep(). + /// + public void DisableAutomaticStepping(bool destroyImmediate = false) + { + if (m_FixedUpdateStepper == null) + { + return; + } + + m_FixedUpdateStepper = null; + if (destroyImmediate) + { + UnityEngine.Object.DestroyImmediate(m_StepperObject); + } + else + { + UnityEngine.Object.Destroy(m_StepperObject); + } + + m_StepperObject = null; + } + + /// + /// Returns whether or not the Academy is automatically stepped during the FixedUpdate phase. + /// + public bool IsAutomaticSteppingEnabled + { + get { return m_FixedUpdateStepper != null; } + } + // Used to read Python-provided environment parameters static int ReadPortFromArgs() { - var args = System.Environment.GetCommandLineArgs(); + var args = Environment.GetCommandLineArgs(); var inputPort = ""; for (var i = 0; i < args.Length; i++) { @@ -166,7 +245,6 @@ static int ReadPortFromArgs() return -1; #endif } - } /// @@ -174,10 +252,11 @@ static int ReadPortFromArgs() /// void InitializeEnvironment() { + EnableAutomaticStepping(); + var floatProperties = new FloatPropertiesChannel(); FloatProperties = floatProperties; - // Try to launch the communicator by using the arguments passed at launch var port = ReadPortFromArgs(); if (port > 0) @@ -203,9 +282,9 @@ void InitializeEnvironment() new CommunicatorInitParameters { version = k_ApiVersion, - name = gameObject.name, + name = "AcademySingleton", }); - Random.InitState(unityRLInitParameters.seed); + UnityEngine.Random.InitState(unityRLInitParameters.seed); } catch { @@ -227,14 +306,19 @@ void InitializeEnvironment() // training mode. In the absence of a communicator, we assume we are // in inference mode. - DecideAction += () => { }; - DestroyAction += () => { }; - AgentSetStatus += i => { }; - AgentResetIfDone += () => { }; - AgentSendState += () => { }; - AgentAct += () => { }; - AgentForceReset += () => { }; - OnEnvironmentReset += () => { }; + ResetActions(); + } + + void ResetActions() + { + DecideAction = () => { }; + DestroyAction = () => { }; + AgentSetStatus = i => { }; + AgentResetIfDone = () => { }; + AgentSendState = () => { }; + AgentAct = () => { }; + AgentForceReset = () => { }; + OnEnvironmentReset = () => { }; } static void OnQuitCommandReceived() @@ -299,7 +383,7 @@ void ForcedFullReset() /// Performs a single environment update to the Academy, and Agent /// objects within the environment. /// - void EnvironmentStep() + public void EnvironmentStep() { if (!m_FirstAcademyReset) { @@ -342,14 +426,6 @@ void EnvironmentReset() OnEnvironmentReset?.Invoke(); } - /// - /// MonoBehaviour function that dictates each environment step. - /// - void FixedUpdate() - { - EnvironmentStep(); - } - /// /// Creates or retrieves an existing ModelRunner that uses the same /// NNModel and the InferenceDevice as provided. @@ -374,21 +450,38 @@ public ModelRunner GetOrCreateModelRunner( } /// - /// Cleanup function + /// Shut down the Academy. /// - protected void OnDestroy() + public void Dispose() { + DisableAutomaticStepping(true); // Signal to listeners that the academy is being destroyed now DestroyAction?.Invoke(); - foreach (var mr in m_ModelRunners) + Communicator?.Dispose(); + Communicator = null; + + if (m_ModelRunners != null) { - mr.Dispose(); + foreach (var mr in m_ModelRunners) + { + mr.Dispose(); + } + m_ModelRunners = null; } + // Clear out the actions so we're not keeping references to any old objects + ResetActions(); + // TODO - Pass worker ID or some other identifier, // so that multiple envs won't overwrite each others stats. TimerStack.Instance.SaveJsonTimers(); + + FloatProperties = null; + m_Initialized = false; + + // Reset the Lazy instance + lazy = new Lazy(() => new Academy()); } } } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs b/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs index 88e3962f05..148afbb370 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Agent.cs @@ -247,33 +247,25 @@ public AgentInfo Info void OnEnable() { m_Id = gameObject.GetInstanceID(); - var academy = FindObjectOfType(); - academy.LazyInitialization(); - OnEnableHelper(academy); + OnEnableHelper(); m_Recorder = GetComponent(); } /// Helper method for the event, created to /// facilitate testing. - void OnEnableHelper(Academy academy) + void OnEnableHelper() { m_Info = new AgentInfo(); m_Action = new AgentAction(); sensors = new List(); - if (academy == null) - { - throw new UnityAgentsException( - "No Academy Component could be found in the scene."); - } - - academy.AgentSetStatus += SetStatus; - academy.AgentResetIfDone += ResetIfDone; - academy.AgentSendState += SendInfo; - academy.DecideAction += DecideAction; - academy.AgentAct += AgentStep; - academy.AgentForceReset += _AgentReset; + Academy.Instance.AgentSetStatus += SetStatus; + Academy.Instance.AgentResetIfDone += ResetIfDone; + Academy.Instance.AgentSendState += SendInfo; + Academy.Instance.DecideAction += DecideAction; + Academy.Instance.AgentAct += AgentStep; + Academy.Instance.AgentForceReset += _AgentReset; m_PolicyFactory = GetComponent(); m_Brain = m_PolicyFactory.GeneratePolicy(Heuristic); ResetData(); @@ -285,15 +277,16 @@ void OnEnableHelper(Academy academy) /// becomes disabled or inactive. void OnDisable() { - var academy = FindObjectOfType(); - if (academy != null) + // If Academy.Dispose has already been called, we don't need to unregister with it. + // We don't want to even try, because this will lazily create a new Academy! + if (Academy.IsInitialized) { - academy.AgentSetStatus -= SetStatus; - academy.AgentResetIfDone -= ResetIfDone; - academy.AgentSendState -= SendInfo; - academy.DecideAction -= DecideAction; - academy.AgentAct -= AgentStep; - academy.AgentForceReset -= _AgentReset; + Academy.Instance.AgentSetStatus -= SetStatus; + Academy.Instance.AgentResetIfDone -= ResetIfDone; + Academy.Instance.AgentSendState -= SendInfo; + Academy.Instance.DecideAction -= DecideAction; + Academy.Instance.AgentAct -= AgentStep; + Academy.Instance.AgentForceReset -= _AgentReset; } m_Brain?.Dispose(); } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/ICommunicator.cs b/UnitySDK/Assets/ML-Agents/Scripts/ICommunicator.cs index 6ac4fa9d13..dafc091d30 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/ICommunicator.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/ICommunicator.cs @@ -89,14 +89,13 @@ Since the messages are sent back and forth with exchange and simultaneously when UnityOutput and UnityInput can be extended to provide functionalities beyond RL UnityRLOutput and UnityRLInput can be extended to provide new RL functionalities */ - public interface ICommunicator + public interface ICommunicator : IDisposable { /// /// Quit was received by the communicator. /// event QuitCommandHandler QuitCommandReceived; - /// /// Reset command sent back from the communicator. /// @@ -118,7 +117,7 @@ public interface ICommunicator void SubscribeBrain(string name, BrainParameters brainParameters); /// - /// Sends the observations of one Agent. + /// Sends the observations of one Agent. /// /// Batch Key. /// Agent info. @@ -141,7 +140,7 @@ public interface ICommunicator Dictionary GetActions(string key); /// - /// Registers a side channel to the communicator. The side channel will exchange + /// Registers a side channel to the communicator. The side channel will exchange /// messages with its Python equivalent. /// /// The side channel to be registered. diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs b/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs index 78da3a6010..9f13b73af0 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Policy/BarracudaPolicy.cs @@ -34,9 +34,7 @@ public BarracudaPolicy( NNModel model, InferenceDevice inferenceDevice) { - var aca = GameObject.FindObjectOfType(); - aca.LazyInitialization(); - var modelRunner = aca.GetOrCreateModelRunner(model, brainParameters, inferenceDevice); + var modelRunner = Academy.Instance.GetOrCreateModelRunner(model, brainParameters, inferenceDevice); m_ModelRunner = modelRunner; } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Policy/BehaviorParameters.cs b/UnitySDK/Assets/ML-Agents/Scripts/Policy/BehaviorParameters.cs index 714b95fd1c..dca26b0d6a 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Policy/BehaviorParameters.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Policy/BehaviorParameters.cs @@ -54,8 +54,8 @@ public bool useChildSensors public string behaviorName { - - get { return m_BehaviorName + "?team=" + m_TeamID;} + + get { return m_BehaviorName + "?team=" + m_TeamID;} } @@ -68,7 +68,7 @@ public IPolicy GeneratePolicy(Func heuristic) case BehaviorType.InferenceOnly: return new BarracudaPolicy(m_BrainParameters, m_Model, m_InferenceDevice); case BehaviorType.Default: - if (FindObjectOfType().IsCommunicatorOn) + if (Academy.Instance.IsCommunicatorOn) { return new RemotePolicy(m_BrainParameters, behaviorName); } diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs b/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs index 83848d72fe..ca09b2f1ff 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Policy/RemotePolicy.cs @@ -25,10 +25,8 @@ public RemotePolicy( string behaviorName) { m_BehaviorName = behaviorName; - var aca = GameObject.FindObjectOfType(); - aca.LazyInitialization(); - m_Communicator = aca.Communicator; - aca.Communicator.SubscribeBrain(m_BehaviorName, brainParameters); + m_Communicator = Academy.Instance.Communicator; + m_Communicator.SubscribeBrain(m_BehaviorName, brainParameters); } /// diff --git a/docs/FAQ.md b/docs/FAQ.md index 74f3e90506..c5e24564e6 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -94,7 +94,7 @@ UnityEnvironment(file_name=filename, worker_id=X) If you receive a message `Mean reward : nan` when attempting to train a model using PPO, this is due to the episodes of the Learning Environment not -terminating. In order to address this, set `Max Steps` for either the Academy or +terminating. In order to address this, set `Max Steps` for the Agents within the Scene Inspector to a value greater than 0. Alternatively, it is possible to manually set `done` conditions for episodes from within scripts for custom episode-terminating events. diff --git a/docs/Getting-Started-with-Balance-Ball.md b/docs/Getting-Started-with-Balance-Ball.md index ad7b53a19e..aba4b8b870 100644 --- a/docs/Getting-Started-with-Balance-Ball.md +++ b/docs/Getting-Started-with-Balance-Ball.md @@ -48,9 +48,6 @@ it contains not one, but several agent cubes. Each agent cube in the scene is a independent agent, but they all share the same Behavior. 3D Balance Ball does this to speed up training since all twelve agents contribute to training in parallel. -### Academy - -The Academy object for the scene is placed on the Ball3DAcademy GameObject. ### Agent diff --git a/docs/Glossary.md b/docs/Glossary.md index 7db920ee51..171a26286a 100644 --- a/docs/Glossary.md +++ b/docs/Glossary.md @@ -1,6 +1,6 @@ # ML-Agents Toolkit Glossary -* **Academy** - Unity Component which controls timing, reset, and +* **Academy** - Singleton object which controls timing, reset, and training/inference settings of the environment. * **Action** - The carrying-out of a decision on the part of an agent within the environment. @@ -12,7 +12,7 @@ carried out given an observation. * **Editor** - The Unity Editor, which may include any pane (e.g. Hierarchy, Scene, Inspector). -* **Environment** - The Unity scene which contains Agents and the Academy. +* **Environment** - The Unity scene which contains Agents. * **FixedUpdate** - Unity method called each time the game engine is stepped. ML-Agents logic should be placed here. * **Frame** - An instance of rendering the main camera for the display. diff --git a/docs/Learning-Environment-Create-New.md b/docs/Learning-Environment-Create-New.md index 9beb60a988..eef62df705 100644 --- a/docs/Learning-Environment-Create-New.md +++ b/docs/Learning-Environment-Create-New.md @@ -17,13 +17,11 @@ steps: 1. Create an environment for your agents to live in. An environment can range from a simple physical simulation containing a few objects to an entire game or ecosystem. -2. Add an Academy MonoBehaviour to a GameObject in the Unity scene - containing the environment. -3. Implement your Agent subclasses. An Agent subclass defines the code an Agent +2. Implement your Agent subclasses. An Agent subclass defines the code an Agent uses to observe its environment, to carry out assigned actions, and to calculate the rewards used for reinforcement training. You can also implement optional methods to reset the Agent when it has finished or failed its task. -4. Add your Agent subclasses to appropriate GameObjects, typically, the object +3. Add your Agent subclasses to appropriate GameObjects, typically, the object in the scene that represents the Agent in the simulation. **Note:** If you are unfamiliar with Unity, refer to @@ -103,27 +101,6 @@ different material from the list of all materials currently in the project.) Note that we will create an Agent subclass to add to this GameObject as a component later in the tutorial. -### Add an Empty GameObject to Hold the Academy - -1. Right click in Hierarchy window, select Create Empty. -2. Name the GameObject "Academy" - -![The scene hierarchy](images/mlagents-NewTutHierarchy.png) - -You can adjust the camera angles to give a better view of the scene at runtime. -The next steps will be to create and add the ML-Agent components. - -## Add an Academy -The Academy object coordinates the ML-Agents in the scene and drives the -decision-making portion of the simulation loop. Every ML-Agent scene needs one -(and only one) Academy instance. - -First, add an Academy component to the Academy GameObject created earlier: - -1. Select the Academy GameObject to view it in the Inspector window. -2. Click **Add Component**. -3. Select **Academy** in the list of components. - ## Implement an Agent To create the Agent: @@ -524,7 +501,6 @@ to use Unity ML-Agents: an Academy and one or more Agents. Keep in mind: -* There can only be one Academy game object in a scene. * If you are using multiple training areas, make sure all the Agents have the same `Behavior Name` and `Behavior Parameters` diff --git a/docs/Learning-Environment-Design.md b/docs/Learning-Environment-Design.md index 2e7e7fd128..a810677fd4 100644 --- a/docs/Learning-Environment-Design.md +++ b/docs/Learning-Environment-Design.md @@ -51,7 +51,7 @@ The ML-Agents Academy class orchestrates the agent simulation loop as follows: an Agent to restart if it finishes before the end of an episode. In this case, the Academy calls the `AgentReset()` function. -To create a training environment, extend the Academy and Agent classes to +To create a training environment, extend the Agent class to implement the above methods. The `Agent.CollectObservations()` and `Agent.AgentAction()` functions are required; the other methods are optional — whether you need to implement them or not depends on your specific scenario. @@ -64,14 +64,13 @@ information. ## Organizing the Unity Scene -To train and use the ML-Agents toolkit in a Unity scene, the scene must contain -a single Academy and as many Agent subclasses as you need. +To train and use the ML-Agents toolkit in a Unity scene, the scene as many Agent subclasses as you need. Agent instances should be attached to the GameObject representing that Agent. ### Academy -The Academy object orchestrates Agents and their decision making processes. Only -place a single Academy object in a scene. +The Academy is a singleton which orchestrates Agents and their decision making processes. Only +a single Academy exists at a time. #### Academy resetting To alter the environment at the start of each episode, add your method to the Academy's OnEnvironmentReset action. @@ -81,9 +80,7 @@ public class MySceneBehavior : MonoBehaviour { public void Awake() { - var academy = FindObjectOfType(); - academy.LazyInitialization(); - academy.OnEnvironmentReset += EnvironmentReset; + Academy.Instance.OnEnvironmentReset += EnvironmentReset; } void EnvironmentReset() @@ -144,8 +141,6 @@ training and for testing trained agents. Or, you may be training agents to operate in a complex game or simulation. In this case, it might be more efficient and practical to create a purpose-built training scene. -Both training and testing (or normal game) scenes must contain an Academy object -to control the agent decision making process. When you create a training environment in Unity, you must set up the scene so that it can be controlled by the external training process. Considerations include: diff --git a/docs/Limitations.md b/docs/Limitations.md index 9a756486b0..ee6675e480 100644 --- a/docs/Limitations.md +++ b/docs/Limitations.md @@ -16,12 +16,13 @@ making. See [Execution Order of Event Functions](https://docs.unity3d.com/Manual/ExecutionOrder.html) for more information. +You can control the frequency of Academy stepping by calling +`Academy.Instance.DisableAutomaticStepping()`, and then calling +`Academy.Instance.EnvironmentStep()` + ## Python API ### Python version As of version 0.3, we no longer support Python 2. -### TensorFlow support - -Currently the Ml-Agents toolkit uses TensorFlow 1.7.1 only. diff --git a/docs/ML-Agents-Overview.md b/docs/ML-Agents-Overview.md index f980a76823..b16c50cea4 100644 --- a/docs/ML-Agents-Overview.md +++ b/docs/ML-Agents-Overview.md @@ -131,17 +131,15 @@ components: _Simplified block diagram of ML-Agents._ -The Learning Environment contains two additional components that help +The Learning Environment contains an additional component that help organize the Unity scene: - **Agents** - which is attached to a Unity GameObject (any character within a scene) and handles generating its observations, performing the actions it receives and assigning a reward (positive / negative) when appropriate. Each Agent is linked to a Policy. -- **Academy** - which orchestrates the observation and decision making process. - The External Communicator lives within the Academy. -Every Learning Environment will always have one global Academy and one Agent for +Every Learning Environment will always have one Agent for every character in the scene. While each Agent must be linked to a Policy, it is possible for Agents that have similar observations and actions to have the same Policy type. In our sample game, we have two teams each with their own medic. diff --git a/docs/Migrating.md b/docs/Migrating.md index a957497532..879c3de69f 100644 --- a/docs/Migrating.md +++ b/docs/Migrating.md @@ -11,14 +11,14 @@ The versions can be found in ## Migrating from 0.13 to latest ### Important changes -* The Academy class was changed to be sealed and its virtual methods were removed. +* The Academy class was changed to a singleton, and its virtual methods were removed. * Trainer steps are now counted per-Agent, not per-environment as in previous versions. For instance, if you have 10 Agents in the scene, 20 environment steps now corresponds to 200 steps as printed in the terminal and in Tensorboard. * Curriculum config files are now YAML formatted and all curricula for a training run are combined into a single file. * The `--num-runs` command-line option has been removed. ### Steps to Migrate * If you have a class that inherits from Academy: - * If the class didn't override any of the virtual methods and didn't store any additional data, you can just replace the instance of it in the scene with an Academy. + * If the class didn't override any of the virtual methods and didn't store any additional data, you can just remove the old script from the scene. * If the class had additional data, create a new MonoBehaviour and store the data on this instead. * If the class overrode the virtual methods, create a new MonoBehaviour and move the logic to it: * Move the InitializeAcademy code to MonoBehaviour.OnAwake diff --git a/docs/Python-API.md b/docs/Python-API.md index b27ead1ed7..9d92874b8c 100644 --- a/docs/Python-API.md +++ b/docs/Python-API.md @@ -263,7 +263,6 @@ i = env.reset() Once a property has been modified in Python, you can access it in C# after the next call to `step` as follows: ```csharp -var academy = FindObjectOfType(); -var sharedProperties = academy.FloatProperties; +var sharedProperties = Academy.Instance.FloatProperties; float property1 = sharedProperties.GetPropertyWithDefault("parameter_1", 0.0f); ``` diff --git a/docs/Training-Curriculum-Learning.md b/docs/Training-Curriculum-Learning.md index 8637fbb36f..8ef2dc5635 100644 --- a/docs/Training-Curriculum-Learning.md +++ b/docs/Training-Curriculum-Learning.md @@ -41,8 +41,8 @@ the same environment. In order to define the curricula, the first step is to decide which parameters of the environment will vary. In the case of the Wall Jump environment, the height of the wall is what varies. We define this as a `Shared Float Property` -that can be accessed in `Academy.FloatProperties`, and by doing so it becomes -adjustable via the Python API. +that can be accessed in `Academy.Instance.FloatProperties`, and by doing +so it becomes adjustable via the Python API. Rather than adjusting it by hand, we will create a YAML file which describes the structure of the curricula. Within it, we can specify which points in the training process our wall height will change, either based on the diff --git a/docs/Training-Generalized-Reinforcement-Learning-Agents.md b/docs/Training-Generalized-Reinforcement-Learning-Agents.md index dcb6ed8358..9f456e095e 100644 --- a/docs/Training-Generalized-Reinforcement-Learning-Agents.md +++ b/docs/Training-Generalized-Reinforcement-Learning-Agents.md @@ -21,7 +21,7 @@ Ball scale of 0.5 | Ball scale of 4 ## Introducing Generalization Using Reset Parameters To enable variations in the environments, we implemented `Reset Parameters`. -`Reset Parameters` are `Academy.FloatProperties` that are used only when +`Reset Parameters` are `Academy.Instance.FloatProperties` that are used only when resetting the environment. We also included different sampling methods and the ability to create new kinds of sampling methods for each `Reset Parameter`. In the 3D ball environment example displayed diff --git a/docs/Training-ML-Agents.md b/docs/Training-ML-Agents.md index e221fd696c..49542dcfe1 100644 --- a/docs/Training-ML-Agents.md +++ b/docs/Training-ML-Agents.md @@ -2,7 +2,7 @@ The ML-Agents toolkit conducts training using an external Python training process. During training, this external process communicates with the Academy -object in the Unity scene to generate a block of agent experiences. These +to generate a block of agent experiences. These experiences become the training set for a neural network used to optimize the agent's policy (which is essentially a mathematical function mapping observations to actions). In reinforcement learning, the neural network diff --git a/docs/images/mlagents-3DBallHierarchy.png b/docs/images/mlagents-3DBallHierarchy.png index 70b455632b..9603e6f77d 100644 Binary files a/docs/images/mlagents-3DBallHierarchy.png and b/docs/images/mlagents-3DBallHierarchy.png differ diff --git a/docs/images/mlagents-NewTutHierarchy.png b/docs/images/mlagents-NewTutHierarchy.png deleted file mode 100644 index d1c4e350c5..0000000000 Binary files a/docs/images/mlagents-NewTutHierarchy.png and /dev/null differ diff --git a/docs/images/mlagents-Open3DBall.png b/docs/images/mlagents-Open3DBall.png index 840ad6b64f..c9e6abaf91 100644 Binary files a/docs/images/mlagents-Open3DBall.png and b/docs/images/mlagents-Open3DBall.png differ