暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

AdaptiveLayerCulling.cs 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. namespace UnityEngine.AdaptivePerformance
  2. {
  3. /// <summary>
  4. /// A scaler used by <see cref="AdaptivePerformanceIndexer"/> for adjusting <see href="https://docs.unity3d.com/ScriptReference/Camera-layerCullDistances.html">layer culling</see> distances.
  5. /// </summary>
  6. public class AdaptiveLayerCulling : AdaptivePerformanceScaler
  7. {
  8. float[] m_defaultDistances = new float[32];
  9. float[] m_scaledDistances = new float[32];
  10. bool init = false;
  11. Camera m_cachedCamera;
  12. /// <summary>
  13. /// Ensures settings are applied during startup.
  14. /// </summary>
  15. protected override void Awake()
  16. {
  17. base.Awake();
  18. if (m_Settings == null)
  19. return;
  20. ApplyDefaultSetting(m_Settings.scalerSettings.AdaptiveLayerCulling);
  21. }
  22. /// <summary>
  23. /// Callback when scaler gets disabled and removed from indexer
  24. /// </summary>
  25. protected override void OnDisabled()
  26. {
  27. init = false;
  28. if (!Camera.main || m_defaultDistances == null)
  29. return;
  30. Camera.main.layerCullDistances = m_defaultDistances;
  31. }
  32. /// <summary>
  33. /// Callback when scaler gets enabled and added to the indexer
  34. /// </summary>
  35. protected override void OnEnabled()
  36. {
  37. AsignDefaultValues();
  38. }
  39. /// <summary>
  40. /// Callback for any level change.
  41. /// </summary>
  42. protected override void OnLevel()
  43. {
  44. if (!Camera.main)
  45. return;
  46. AsignDefaultValues();
  47. if (ScaleChanged())
  48. {
  49. for (var i = 31; i >= 0; --i)
  50. {
  51. if (m_defaultDistances[i] == 0)
  52. continue;
  53. m_scaledDistances[i] = m_defaultDistances[i] * Scale;
  54. }
  55. Camera.main.layerCullDistances = m_scaledDistances;
  56. }
  57. }
  58. void AsignDefaultValues()
  59. {
  60. if (m_cachedCamera == null || m_cachedCamera != Camera.main)
  61. {
  62. m_cachedCamera = Camera.main;
  63. init = false;
  64. }
  65. if (init || !Camera.main)
  66. return;
  67. m_defaultDistances = Camera.main.layerCullDistances;
  68. init = true;
  69. }
  70. }
  71. }