换个思路,点击按钮时不要侵入UI逻辑,UI组件自己找该显示什么
using System;
using Architecture;
using Class;
using Game;
using UnityEngine;
using UnityEngine.UI;
namespace UI
{
public class FarmInfoWin : Window<FarmInfoWin>
{
public Text titleText;
public Text productNameText;
public Image productIconImage;
public Text outputText;
public Text timerText;
public Button destroyBtn;
private Building _curShowingBuilding;
private Farm _curShowingFarm;
protected override void Awake()
{
base.Awake();
destroyBtn.onClick.AddListener(DestroyFarm);
WorldTimer.DoThisDay += UpdateTimerText;
}
public override void Show()
{
base.Show();
UpdateInfo();
}
private void UpdateInfo()
{
// 获取点击时的建筑物
var curGround = GameController.Instance.CurrentSelectGroundProperties;
_curShowingBuilding = Dict.BuildingDict[curGround.BuildingId];
_curShowingFarm = curGround.transform.Find("Building")
.GetComponent<Farm>();
var curGoods = Dict.GoodsDict[_curShowingFarm.productId];
titleText.text = _curShowingBuilding.Name;
productNameText.text = curGoods.Name;
productIconImage.sprite = Resources.Load<Sprite>("Icon/" + curGoods.ResName);
var prefix = _curShowingFarm.growPeriod > 0 ? _curShowingFarm.growPeriod + "天成熟,然后" : "";
outputText.text = prefix + "每" + _curShowingFarm.productPeriod + "天产出" + _curShowingFarm.count + "个" + curGoods.Name;
UpdateTimerText();
}
private void UpdateTimerText()
{
timerText.text = _curShowingFarm.IsGrowing()
? "未成熟,距离成熟还有" + (_curShowingFarm.growPeriod - _curShowingFarm.PassingDays) + "天"
: "距离收获还有" + (_curShowingFarm.productPeriod - _curShowingFarm.PassingDays) + "天";
}
private void DestroyFarm()
{
Hide();
// TODO 拆除建筑,改变GroundProperties的State
}
}
}