353人加入学习
(6人评价)
Steam模拟经营游戏《冒险村的商人日记》从开发到上架全流程

开发 策划 美术 音乐 发行 全部教给你

价格 ¥ 890.00

换个思路,点击按钮时不要侵入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
        }
    }
    
}

 

[展开全文]

授课教师

独立游戏制作人,业余程序

课程特色

视频(245)
下载资料(22)
图文(1)