void OnDestroy()
 {
     UIState.RemoveTowerSelectionListener(OnDeselect);
     if (clickReceptor == null) {
         if (GameObject.Find("ClickReceptorCanvas") == null) {
             return;
         }
         clickReceptor = GameObject.Find("ClickReceptorCanvas").GetComponentInChildren<ClickReceptor>();
     }
     clickReceptor.RemoveOnClickListener(OnDeselect);
     PlayerMoney.instance.RemoveOnMoneyChangeListener(UpdateUpgradeButtonAvailability);
 }
 // Use this for initialization
 void Start()
 {
     map = Map.instance;
     //		towerSpriteCenterObj = transform.Find("TowerSpriteCenter").gameObject;
     towerSpriteGlowObj = transform.Find("TowerSpriteGlow").gameObject;
     localizableOnMap = GetComponent<LocalizableOnMap>();
     playerMoney = PlayerMoney.instance;
     upgradeCanvas =  GetComponentsInChildren<Canvas>(true)[0];
     upgradeButtonObject = upgradeCanvas.transform.Find("UpgradeButton").gameObject;
     dpsLabel = upgradeCanvas.transform.Find("DpsLabel").gameObject;
     upgradeButtonBackground = upgradeCanvas.transform.Find("UpgradeButtonBackground").gameObject;
     sellButtonBackground = upgradeCanvas.transform.Find("SellButtonBackground").gameObject;
     dpsLabelBackground = upgradeCanvas.transform.Find("DpsLabelBackground").gameObject;
     sellButtonObject = upgradeCanvas.transform.Find("SellButton").gameObject;
     Image upgradeImage = upgradeButtonObject.GetComponent<Image>();
     upgradeImage.color = towerSpriteGlowObj.GetComponent<SpriteRenderer>().color;
     clickReceptor = GameObject.Find("ClickReceptorCanvas").GetComponentInChildren<ClickReceptor>();
     clickReceptor.AddOnClickListener(OnDeselect);
     UIState.AddTowerSelectionListener(OnDeselect);
     GameObject towerButtonObject =  transform.Find("TowerButtonCanvas/TowerButton").gameObject;
     towerButtonObject.GetComponent<TowerButton>().OnClick += new TowerButton.OnClickHandler(TowerSelection);
     playerMoney.AddOnMoneyChangeListener(UpdateUpgradeButtonAvailability);
 }
 void Awake()
 {
     instance = this;
 }