Unity3D自学笔记——架构应用(二)选择英雄界面

UGUI架构的应用案例——选择英雄界面

效果展示

这里写图片描述

这里写图片描述

这里写图片描述

描述


通过右边的英雄选择列表,将对应的英雄置于镜头前面,并更新英雄介绍。

步骤

  1. 每个英雄有两个模型,一个位于尽头远点,默认显示并播放Idle动画,一个位于镜头前方,默认隐藏显示时播放hit动画
  2. 选择英雄界面为三个单选按钮,每个单选按钮与两个英雄模型关联,在点击时间中进行处理,对应模型的隐藏和显示
  3. UIInfo初始化时调用PhotoManager从后台取英雄介绍数据并缓存
  4. UIInfo注册UISenceWidget的PointerClick事件,每当按钮进行点击更新对应英雄的介绍面板

目录结构


这里写图片描述

组件情况


UI_CharacterSelection->UIInfo
UIScene_Bottom->UIScene
UIScene_SelectHero->UIScene
UIScene_HeroInfo->UIScene
togHero1->UISceneWidget
togHero2->UISceneWidget
togHero3->UISceneWidget

实现

1.创建英雄近点和远点(目前只有两个英雄),并挂上对应角色模型

这里写图片描述

这里写图片描述

2.单选按钮与角色模型对应,并实现按钮选中后对应模型的显示和隐藏

这里写图片描述

[RequireComponent(typeof(Toggle))]
public class UIToggleObject : MonoBehaviour {
    public GameObject Show;
    public GameObject Hide;
    void Awake()
    {
        GetComponent<Toggle>().onValueChanged.AddListener(OnSelectChanged);
    }

    private void OnSelectChanged(bool isChecked)
    {
            Show.SetActive(isChecked);
            Hide.SetActive(!isChecked);
    }
}

3.英雄信息的读取和缓存

表结构
两个字段一个ID一个描述
这里写图片描述

服务端修改

ALI.ARPG.Operations
构造Entity

[Serializable]
    public class HeroEntity : IEntityIntKey
    {
        public virtual int ID { get; set; }
        public virtual string Desc { get; set; }
    }

由于后面代码需要,对服务端架构做了调整,对Entity做了接口约束,这里把IntKey单独抽取出来是为了扩展以后主键不是int类型的实体,如GUID

public interface IEntity
{
}
public interface IEntityIntKey : IEntity
{
    int ID { get; set; }
}

增加一个OperationCode

public enum OperationCode : byte
    {
        Register,
        Login,
        GetHeroInfo
    }

ALI.ARPG.Data
设置Entity与数据库的映射及构造Hero对应的Repository

public class HeroMap: ClassMap<HeroEntity>
    {
        public HeroMap()
        {
            Table("heroinfo");
            Id(x => x.ID).Column("id");
            Map(x =
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值