SceneSkyboxMatContainer.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using UnityEngine;
  2. using System.Collections;
  3. public class SceneSkyboxMatContainer : MonoBehaviour
  4. {
  5. public Material[] SkyboxMats;
  6. private Material lastSkyboxMat = null;
  7. public bool ChangeSkyboxMat(string matName)
  8. {
  9. if(string.IsNullOrEmpty(matName))
  10. {
  11. RenderSettings.skybox = null;
  12. return false;
  13. }
  14. if (SkyboxMats == null || SkyboxMats.Length == 0) return false;
  15. for(int idx =0; idx < SkyboxMats.Length;idx++)
  16. {
  17. if(SkyboxMats[idx].name == matName)
  18. {
  19. lastSkyboxMat = RenderSettings.skybox;
  20. RenderSettings.skybox = SkyboxMats[idx];
  21. return true;
  22. }
  23. }
  24. return false;
  25. }
  26. public void ChangeSkyboxMat(int matIdx)
  27. {
  28. if (SkyboxMats == null || SkyboxMats.Length == 0) return;
  29. if (matIdx < 0 || matIdx >= SkyboxMats.Length) return;
  30. lastSkyboxMat = RenderSettings.skybox;
  31. RenderSettings.skybox = SkyboxMats[matIdx];
  32. }
  33. public void RestoreSkyboxMat()
  34. {
  35. RenderSettings.skybox = lastSkyboxMat;
  36. lastSkyboxMat = null;
  37. }
  38. }