SRPG游戏开发(二十二)第六章 基本框架 - 七 视图(View&UI)

本文档介绍了SRPG游戏开发中关于视图(View)和用户界面(UI)的基础框架,包括使用Stack方式打开UI,通过字典存储并管理View,以及核心的打开和关闭视图的流程与代码实现。详细内容涉及Manager的使用,并指出更多功能如销毁、获取等未在文中展开。示例代码可在Example文件夹中找到。
摘要由CSDN通过智能技术生成

返回总目录

第六章 基本框架(Framework)



七 视图(View&UI)

关于View与UI,一搜一大堆。

我们也不过多介绍了。

我们将使用Stack方式来打开我们的UI。

我们所有的View都存储在一个叫做ViewDictionary的字典中,它继承了IDictionary。并且主要核心算法(打开,关闭,销毁等)全部都放在它之中。使用名字string来作为Key,当然你也可以不使用名字,修改其使用Enum

而Manager持有一个ViewDictionary,作为DontDestroy的父对象。

我们只来简单介绍一下核心部分,打开View,还有关闭中间View的方法。
当然,除了这两个,还有销毁,获取等等一系列,就不在这里说明了。


1 打开(Open View)

1.1 流程图(Flow Chart)

Open Flow Chart

1.2 核心代码块(Main Code)
        /// <summary>
        /// 获取或实例化view。
        /// 实例化时:
        /// 1、预制体带组件,直接返回。
        /// 2、预制体不带组件,动态添加组件。
        /// 错误:
        /// 1、找不到组件的类型。
        /// 2、组件类型是Abstract。
        /// 3、组件类型没有继承自ViewBase。
        /// </summary>
        /// <param name="viewName"></param>
        /// <returns></returns>
        protected ViewBase GetOrInstantiateView(string viewName)
        {
            ViewBase view;
            if (!m_ViewDict.TryGetValue(viewName, out view))
            {
                // 获取Prefab
                GameObject prefab = GetOrLoadPrefab(viewName);
                if (prefab == null)
                {
                    Debug.LogError("[InstantiateView] Prefab is not found.");
                    return null;
                }

                // 实例化并检测组件
                GameObject viewGameObject = GameObject.Instantiate(prefab);
                view = viewGameObject.GetComponent<ViewBase>();
                if (view == null)
                {
                    // 没有找到组件,动态添加
                    Type type = GetViewComponentType(viewName);
            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值