KeyColour.cs 915 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.ComponentModel;
  2. using UnityEngine;
  3. namespace DunGen.Demo
  4. {
  5. public class KeyColour : MonoBehaviour, IKeyLock
  6. {
  7. [SerializeField]
  8. private int keyID;
  9. [SerializeField]
  10. private KeyManager keyManager;
  11. private MaterialPropertyBlock propertyBlock;
  12. public void OnKeyAssigned(Key key, KeyManager manager)
  13. {
  14. keyID = key.ID;
  15. keyManager = manager;
  16. SetColour(key.Colour);
  17. }
  18. private void Start()
  19. {
  20. if (keyManager == null)
  21. return;
  22. var key = keyManager.GetKeyByID(keyID);
  23. SetColour(key.Colour);
  24. }
  25. private void SetColour(Color colour)
  26. {
  27. if (Application.isPlaying)
  28. {
  29. if(propertyBlock == null)
  30. propertyBlock = new MaterialPropertyBlock();
  31. propertyBlock.SetColor("_Color", colour);
  32. foreach (var r in GetComponentsInChildren<Renderer>())
  33. r.SetPropertyBlock(propertyBlock);
  34. }
  35. }
  36. }
  37. }