OpenByUrl.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using HorizonBasedAmbientOcclusion;
  2. using System;
  3. using System.Runtime.InteropServices;
  4. using UnityEngine;
  5. using UnityEngine.Rendering.PostProcessing;
  6. public class OpenByUrl : MonoBehaviour
  7. {
  8. [DllImport("__Internal")]
  9. private static extern string StringReturnValueFunction();
  10. public static string UrlMsg = string.Empty;
  11. public GameObject panel_1;
  12. public GameObject panel_2;
  13. public GameObject panel_3;
  14. public PageIndex defaultPage;
  15. public GameObject reflectProbe;
  16. public HBAO aoComponent;
  17. public PostProcessLayer postProcessComponent;
  18. public PostProcessVolume postProcessVolume;
  19. private void Awake()
  20. {
  21. panel_1 = this.transform.GetChild(0).gameObject;
  22. panel_2 = this.transform.GetChild(1).gameObject;
  23. panel_3 = this.transform.GetChild(2).gameObject;
  24. panel_1.SetActive(false);
  25. panel_2.SetActive(false);
  26. panel_3.SetActive(false);
  27. SelectPage();
  28. }
  29. void SelectPage()
  30. {
  31. UrlMsg = "?panel=1&quality=low";
  32. try
  33. {
  34. UrlMsg = StringReturnValueFunction();
  35. }
  36. catch (System.Exception e)
  37. {
  38. UrlMsg = "[catch]" + e.Message;
  39. Debug.Log("获取URL参数错误!!!");
  40. }
  41. string panelValue = "";
  42. string qualityValue = "";
  43. // 解析URL参数
  44. if (UrlMsg.StartsWith("?"))
  45. {
  46. string[] paramPairs = UrlMsg.Substring(1).Split('&');
  47. foreach (string pair in paramPairs)
  48. {
  49. string[] kv = pair.Split('=');
  50. if (kv.Length == 2)
  51. {
  52. if (kv[0] == "panel")
  53. panelValue = kv[1];
  54. else if (kv[0] == "quality")
  55. qualityValue = kv[1];
  56. }
  57. }
  58. }
  59. // 输出qualityValue(用于调试或设置画质)
  60. if (!string.IsNullOrEmpty(qualityValue))
  61. {
  62. Debug.Log("Quality 参数为: " + qualityValue);
  63. // 你可以在这里根据qualityValue设置游戏画质
  64. // 例如:
  65. if (qualityValue == "high")
  66. {
  67. QualitySettings.SetQualityLevel(3);
  68. }
  69. else if (qualityValue == "middle")
  70. {
  71. QualitySettings.SetQualityLevel(2);
  72. reflectProbe.gameObject.SetActive(false);
  73. aoComponent.enabled = false;
  74. postProcessComponent.enabled = false;
  75. postProcessVolume.enabled = false;
  76. }
  77. else
  78. {
  79. QualitySettings.SetQualityLevel(1);
  80. reflectProbe.gameObject.SetActive(false);
  81. aoComponent.enabled = false;
  82. postProcessComponent.enabled = false;
  83. postProcessVolume.enabled = false;
  84. }
  85. }
  86. else {
  87. QualitySettings.SetQualityLevel(1);
  88. reflectProbe.gameObject.SetActive(false);
  89. aoComponent.enabled = false;
  90. postProcessComponent.enabled = false;
  91. postProcessVolume.enabled = false;
  92. }
  93. // 根据 panel 参数显示对应页面
  94. switch (panelValue)
  95. {
  96. case "1":
  97. GlobalData.pageIndex = PageIndex.Page1;
  98. panel_1.SetActive(true);
  99. break;
  100. case "2":
  101. GlobalData.pageIndex = PageIndex.Page2;
  102. panel_2.SetActive(true);
  103. break;
  104. case "3":
  105. GlobalData.pageIndex = PageIndex.Page3;
  106. panel_3.SetActive(true);
  107. break;
  108. default:
  109. switch (defaultPage)
  110. {
  111. case PageIndex.Page1:
  112. GlobalData.pageIndex = PageIndex.Page1;
  113. panel_1.SetActive(true);
  114. break;
  115. case PageIndex.Page2:
  116. GlobalData.pageIndex = PageIndex.Page2;
  117. panel_2.SetActive(true);
  118. break;
  119. case PageIndex.Page3:
  120. GlobalData.pageIndex = PageIndex.Page3;
  121. panel_3.SetActive(true);
  122. break;
  123. }
  124. break;
  125. }
  126. }
  127. }