NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Debug/SROptions.Performance.cs

195 lines
5.0 KiB
C#
Raw Normal View History

2023-10-19 15:00:19 +08:00
using System.ComponentModel;
using Framework;
using Gameplay.Performance;
using MagicaCloth2;
using PhxhSDK;
using UnityEditor;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public partial class SROptions
{
[Category("性能")]
public bool EnableOutline
{
get { return _eanbleOutline; }
set
{
_eanbleOutline = value;
PerformanceManager.instance.data.enablePostOutline = _eanbleOutline;
}
}
private bool _eanbleOutline = true;
[Category("性能")]
public bool EnableDrawTireMark
{
get { return _enableDrawTireMark; }
set
{
_enableDrawTireMark = value;
PerformanceManager.instance.data.enableTireMark = _enableDrawTireMark;
}
}
private bool _enableDrawTireMark = true;
// 光照
[Category("性能")]
public bool EnableShadow
{
get { return _enableShadow; }
set
{
_enableShadow = value;
// 找到场景中的所有灯光
var lights = GameObject.FindObjectsOfType<Light>();
foreach (var light in lights)
{
light.shadows = _enableShadow ? LightShadows.Soft : LightShadows.None;
}
}
}
private bool _enableShadow = true;
// 布料
[Category("性能")]
public bool EnableCloth
{
get { return _enableCloth; }
set
{
_enableCloth = value;
PerformanceManager.instance.data.enableCloth = _enableCloth;
// 找到场景中的所有灯光
var cloths = GameObject.FindObjectsOfType<MagicaCloth>();
foreach (var cloth in cloths)
{
cloth.enabled = _enableCloth;
}
}
}
private bool _enableCloth = true;
[Category("性能")]
public int TargetFrameRate
{
get { return _targetFrameRate; }
set
{
_targetFrameRate = value;
}
}
private int _targetFrameRate = 60;
[Category("性能")]
public void SetFps()
{
Application.targetFrameRate = _targetFrameRate;
}
2024-01-10 18:11:17 +08:00
[Category("性能")]
public int Resolution
{
get { return _resolution; }
set
{
_resolution = value;
}
}
private int _resolution = 0;
[Category("性能")]
public void SetResoulution()
{
PerformanceManager.SetResolution(_resolution);
}
2023-10-19 15:00:19 +08:00
[Category("性能")]
public bool EnableEffect
{
get { return _enableEffect; }
set { _enableEffect = value; }
}
private bool _enableEffect = true;
[Category("性能")]
public bool EnableLog
{
get { return DebugUtil.LogEnable; }
set { DebugUtil.LogEnable = value; }
}
[Category("性能")]
public bool EnableMainRender
{
get { return _enableMainRender; }
set
{
_enableMainRender = value;
CameraManager.Instance.MainCamera.enabled = _enableMainRender;
}
}
private bool _enableMainRender = true;
[Category("性能")]
public bool EnableUIRender
{
get { return _enableUIRender; }
set
{
_enableUIRender = value;
CameraManager.Instance.UICamera.enabled = _enableUIRender;
}
}
private bool _enableUIRender = true;
2023-12-14 14:50:29 +08:00
[Category("性能")]
public bool EnableAllSurfaceInScene
{
get => _enableAllSurfaceInScene;
set
{
if (_enableAllSurfaceInScene != value)
{
_enableAllSurfaceInScene = value;
2024-01-02 14:52:37 +08:00
if (NLDSceneManager.Instance != null)
2023-12-14 14:50:29 +08:00
{
2024-01-02 14:52:37 +08:00
NLDSceneManager.Instance.UseAllSurface = value;
2023-12-14 14:50:29 +08:00
}
}
}
}
private bool _enableAllSurfaceInScene = false;
2023-10-19 15:00:19 +08:00
#if UNITY_EDITOR
[Category("性能"),DisplayName("渲图")]
public void RenderImg()
{
// 渲图
var renderTexture = new RenderTexture(1920, 1080, 24);
var additionalCameraData = CameraManager.Instance.UICamera.GetComponent<UniversalAdditionalCameraData>();
additionalCameraData.renderType = CameraRenderType.Base;
CameraManager.Instance.UICamera.targetTexture = renderTexture;
CameraManager.Instance.UICamera.Render();
additionalCameraData.renderType = CameraRenderType.Overlay;
CameraManager.Instance.UICamera.targetTexture = null;
RenderTexture.active = renderTexture;
// 保存到本地
var texture2D = new Texture2D(RenderTexture.active.width, RenderTexture.active.height, TextureFormat.RGB24, false);
texture2D.ReadPixels(new Rect(0, 0, RenderTexture.active.width, RenderTexture.active.height), 0, 0);
texture2D.Apply();
var bytes = texture2D.EncodeToPNG();
var path = Application.dataPath + "/" + "render.png";
System.IO.File.WriteAllBytes(path, bytes);
AssetDatabase.Refresh();
}
#endif
}