void ReportError() { _onGuiDisabled = true; StartCoroutine(_slack.CoPostScreenshot( () => _onGuiDisabled = false, "エラー報告", null, _errorReportChannel, waitFrameCount: 1)); // 次のフレームでOnGUIで何もしない状態にしてから撮影 var log = _logHandler.GetString(); var sb = new System.Text.StringBuilder(); var now = System.DateTime.Now; sb.Append("----SystemInfo----\n"); sb.AppendFormat("[ErrorLog] {0}\n", now.ToString("yyyy/MM/dd HH:mm:ss.fff")); sb.AppendFormat("device: {0} {1} {2} Memory:{3}\n", SystemInfo.deviceModel, SystemInfo.deviceName, SystemInfo.deviceType, SystemInfo.systemMemorySize); sb.AppendFormat("os: {0} {1}\n", SystemInfo.operatingSystem, SystemInfo.operatingSystemFamily); sb.AppendFormat("graphics: {0} {1} {2} Memory:{3}\n", SystemInfo.graphicsDeviceName, SystemInfo.graphicsDeviceType, SystemInfo.graphicsDeviceVersion, SystemInfo.graphicsMemorySize); sb.AppendFormat("processor: {0} core: {1} {2}MHz\n", SystemInfo.processorType, SystemInfo.processorCount, SystemInfo.processorFrequency); sb.AppendFormat("battery: {0}% {1}\n", SystemInfo.batteryLevel * 100f, SystemInfo.batteryStatus); sb.AppendFormat("shaderLevel: {0}\n", SystemInfo.graphicsShaderLevel); sb.AppendFormat("maxTextureSize: {0}\n", SystemInfo.maxTextureSize); sb.AppendFormat("nonPowerOfTwoSupport: {0}\n", SystemInfo.npotSupport); #if UNITY_2018_1_OR_NEWER sb.AppendFormat("hasDynamicUniformArrayIndexingInFragmentShaders: {0}\n", SystemInfo.hasDynamicUniformArrayIndexingInFragmentShaders); sb.AppendFormat("supports32bitsIndexBuffer: {0}\n", SystemInfo.supports32bitsIndexBuffer); #endif sb.Append("----SceneInfo----\n"); for (int i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; i++) { sb.AppendFormat("{0}\n", UnityEngine.SceneManagement.SceneManager.GetSceneAt(i).name); } sb.Append("----Log----\n"); var bytes = System.Text.Encoding.UTF8.GetBytes(sb.ToString() + log); StartCoroutine(_slack.CoPostBinary( bytes, "errorLog" + now.ToString("yyyy_MM_dd__HH_mm_ss_fff") + ".txt", null, null, _errorReportChannel)); }
void Update() { if (Input.GetKeyDown(KeyCode.S)) { StartCoroutine(_slack.CoPostScreenshot(null, null, null, null, 0, false, Kayac.TextureUtil.FileType.Jpeg)); } if (Input.GetKeyDown(KeyCode.F1)) { _postProcess.bloomCombineStartLevel -= 1; Debug.Log(_postProcess.bloomCombineStartLevel); } if (Input.GetKeyDown(KeyCode.F2)) { _postProcess.bloomCombineStartLevel += 1; Debug.Log(_postProcess.bloomCombineStartLevel); } _postProcess.enabled = _enableToggle.isOn; _stdPostProcessLayer.enabled = _enableStdToggle.isOn; float speed = _speedSlider.value; speed = Mathf.Pow(10f, (speed - 0.5f) * 3); float dt = Time.deltaTime * speed; for (int i = 0; i < _objects.Length; i++) { Update(i, dt); } // 以下ベンチマーク _times[_timeIndex] = Time.realtimeSinceStartup; _timeIndex++; if (_timeIndex >= _times.Length) { _timeIndex = 0; } var latest = ((_timeIndex - 1) < 0) ? (_times.Length - 1) : (_timeIndex - 1); var avg = (_times[latest] - _times[_timeIndex]) / (_times.Length - 1); _text.text = "FrameTime: " + (avg * 1000f).ToString("N2") + "\nCount: " + _count.ToString("N2") + " " + _postProcess.bloomCombineStartLevel; // ベンチマーク中は物描かない _objectsRoot.gameObject.SetActive(!_benchmarkToggle.isOn); if (_benchmarkToggle.isOn) { var targetMs = _24fpsToggle.isOn ? (1000f / 24f) : (1000f / 40f); var accel = (((targetMs * 0.001f) - Time.unscaledDeltaTime) * (_count + 1f) * 0.1f) - (_countVelocity * 0.5f); _countVelocity += accel; _count += _countVelocity; _count = Mathf.Clamp(_count, 0f, 10000f); } else { _count = 0f; _countVelocity = 0f; } _fillRenderer.SetCount(_count); _fillRenderer.ManualUpdate(); if (_logToggle.isOn) { _logText.text = _log.Tail(10); } _logText.enabled = _logToggle.isOn; }
void Update() { if (Input.GetKeyDown(KeyCode.S)) { StartCoroutine(slack.CoPostScreenshot(null, null, null, null, 0, false, Kayac.TextureUtil.FileType.Jpeg)); } if (Input.GetKeyDown(KeyCode.F1)) { postProcess.BloomCombineStartLevel -= 1; Debug.Log(postProcess.BloomCombineStartLevel); } if (Input.GetKeyDown(KeyCode.F2)) { postProcess.BloomCombineStartLevel += 1; Debug.Log(postProcess.BloomCombineStartLevel); } postProcess.enabled = enableToggle.isOn; stdPostProcessLayer.enabled = enableStdToggle.isOn; float speed = speedSlider.value; speed = Mathf.Pow(10f, (speed - 0.5f) * 3); float dt = Time.deltaTime * speed; for (int i = 0; i < objects.Length; i++) { Update(i, dt); } // 以下ベンチマーク times[timeIndex] = Time.realtimeSinceStartup; timeIndex++; if (timeIndex >= times.Length) { timeIndex = 0; } var latest = ((timeIndex - 1) < 0) ? (times.Length - 1) : (timeIndex - 1); var avg = (times[latest] - times[timeIndex]) / (times.Length - 1); text.text = "FrameTime: " + (avg * 1000f).ToString("N2") + "\nCount: " + count.ToString("N2") + " " + postProcess.BloomCombineStartLevel; // ベンチマーク中は物描かない objectsRoot.gameObject.SetActive(!benchmarkToggle.isOn); if (benchmarkToggle.isOn) { var targetMs = fps24Toggle.isOn ? (1000f / 24f) : (1000f / 40f); var accel = (((targetMs * 0.001f) - Time.unscaledDeltaTime) * (count + 1f) * 0.1f) - (countVelocity * 0.5f); countVelocity += accel; count += countVelocity; count = Mathf.Clamp(count, 0f, 10000f); } else { count = 0f; countVelocity = 0f; } fillRenderer.SetCount(count); fillRenderer.ManualUpdate(); if (logToggle.isOn) { logText.text = log.Tail(10); } logText.enabled = logToggle.isOn; }