using System.IO; using System; using UnityEngine; namespace MLAgents { /// /// Side channel that supports modifying attributes specific to the Unity Engine. /// public class EngineConfigurationChannel : SideChannel { private const string k_EngineConfigId = "e951342c-4f7e-11ea-b238-784f4387d1f7"; /// /// Initializes the side channel. /// public EngineConfigurationChannel() { ChannelId = new Guid(k_EngineConfigId); } /// public override void OnMessageReceived(byte[] data) { using (var memStream = new MemoryStream(data)) { using (var binaryReader = new BinaryReader(memStream)) { var width = binaryReader.ReadInt32(); var height = binaryReader.ReadInt32(); var qualityLevel = binaryReader.ReadInt32(); var timeScale = binaryReader.ReadSingle(); var targetFrameRate = binaryReader.ReadInt32(); timeScale = Mathf.Clamp(timeScale, 1, 100); Screen.SetResolution(width, height, false); QualitySettings.SetQualityLevel(qualityLevel, true); Time.timeScale = timeScale; Time.captureFramerate = 60; Application.targetFrameRate = targetFrameRate; } } } } }