DialogForm的和其他界面一样,继承自UGuiForm

比起普通的界面,自己实现了这些功能(可在创建时配置的):

1.m_DialogMode

2.m_PauseGame:是否暂停界面,如果为true,在onopen(OnOpen是每次打开是调用)时就会调用一次 GameEntry.Base.PauseGame():

        public void PauseGame(){if (IsGamePaused){return;}m_GameSpeedBeforePause = GameSpeed;GameSpeed = 0f;}

3. 此外,还有这三个委托:

        private GameFrameworkAction<object> m_OnClickConfirm = null;private GameFrameworkAction<object> m_OnClickCancel = null;private GameFrameworkAction<object> m_OnClickOther = null;

它们在OnOpen时会被注册(userid)

            RefreshConfirmText(dialogParams.ConfirmText);m_OnClickConfirm = dialogParams.OnClickConfirm;RefreshCancelText(dialogParams.CancelText);m_OnClickCancel = dialogParams.OnClickCancel;RefreshOtherText(dialogParams.OtherText);m_OnClickOther = dialogParams.OnClickOther;

它们分别会:

        public void OnConfirmButtonClick(){Close();if (m_OnClickConfirm != null){m_OnClickConfirm(m_UserData);}}public void OnCancelButtonClick(){Close();if (m_OnClickCancel != null){m_OnClickCancel(m_UserData);}}public void OnOtherButtonClick(){Close();if (m_OnClickOther != null){m_OnClickOther(m_UserData);}}

____________________

有关产生Dialog的函数,在UIExtension中:

        public static int? OpenUIForm(this UIComponent uiComponent, int uiFormId, object userData = null){IDataTable<DRUIForm> dtUIForm = GameEntry.DataTable.GetDataTable<DRUIForm>();DRUIForm drUIForm = dtUIForm.GetDataRow(uiFormId);if (drUIForm == null){Log.Warning("Can not load UI form '{0}' from data table.", uiFormId.ToString());return null;}string assetName = AssetUtility.GetUIFormAsset(drUIForm.AssetName);if (!drUIForm.AllowMultiInstance){if (uiComponent.IsLoadingUIForm(assetName)){return null;}if (uiComponent.HasUIForm(assetName)){return null;}}return uiComponent.OpenUIForm(assetName, drUIForm.UIGroupName, Constant.AssetPriority.UIFormAsset, drUIForm.PauseCoveredUIForm, userData);}public static void OpenDialog(this UIComponent uiComponent, DialogParams dialogParams){if (((ProcedureBase)GameEntry.Procedure.CurrentProcedure).UseNativeDialog){OpenNativeDialog(dialogParams);}else{uiComponent.OpenUIForm(UIFormId.DialogForm, dialogParams);}}

调用这个OpenDialog的地方有:

                // 需要强制更新游戏应用GameEntry.UI.OpenDialog(new DialogParams{Mode = 2,Title = GameEntry.Localization.GetString("ForceUpdate.Title"),Message = GameEntry.Localization.GetString("ForceUpdate.Message"),ConfirmText = GameEntry.Localization.GetString("ForceUpdate.UpdateButton"),OnClickConfirm = GotoUpdateApp,CancelText = GameEntry.Localization.GetString("ForceUpdate.QuitButton"),OnClickCancel = delegate (object userData) { UnityGameFramework.Runtime.GameEntry.Shutdown(ShutdownType.Quit); },});
                GameEntry.UI.OpenDialog(new DialogParams{Mode = 2,Title = GameEntry.Localization.GetString("UpdateResourceViaCarrierDataNetwork.Title"),Message = GameEntry.Localization.GetString("UpdateResourceViaCarrierDataNetwork.Message"),ConfirmText = GameEntry.Localization.GetString("UpdateResourceViaCarrierDataNetwork.UpdateButton"),OnClickConfirm = StartUpdateResources,CancelText = GameEntry.Localization.GetString("UpdateResourceViaCarrierDataNetwork.QuitButton"),OnClickCancel = delegate (object userData) { UnityGameFramework.Runtime.GameEntry.Shutdown(ShutdownType.Quit); },});

超棒!

unity gameframework 《starforce》 DialogForm UI学习相关推荐

  1. unity gameframework starforce学习1

    TargetableObject是可当作目标物entity的逻辑脚本都要继承的脚本 实现接口: OnInit OnShow OnUpdate OnDead:GameEntry.Entity.HideE ...

  2. 1.15 从0开始学习Unity游戏开发--游戏UI

    上一章中,我们剩下最后一个任务,需要支持鼠标控制准心来进行设计,那么准心本质上就是一个始终呈现在屏幕上的一个图片,你当然可以用一个3D物体来制作,之前讲解渲染概念的时候也提到过,我们的屏幕就是相机的近 ...

  3. Unity UI学习(1)——制作技能冷却图标

    在初步了解了Unity的UI相关资料后,对UI了更多了解. 首先了解一下相关概念 UI:    User Interface 用户界面: GUI: Graphic User Interface  图形 ...

  4. Unity游戏优化[第二版]学习记录6

    以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...

  5. Unity——基于MVC的UI框架

    Unity--基于MVC的UI框架 前言 今天来学习一下MVC框架思想在Unity项目中的应用 MVC框架 概念 MVC全名是Model View Controller,是模型(Model)-视图(V ...

  6. Unity MVC设计模式与UI背包界面制作

    Unity MVC设计模式与UI背包界面制作 MVC设计模式非常适合UI的架构,UI界面相当于View,UI转换控制相当于Controller,UI上面的数据变换相当于Model.MVC设计模式在软件 ...

  7. Unity游戏优化[第二版]学习记录4

    Unity游戏优化[第二版]学习记录4 第4章 着手处理艺术资源 一.音频 1.导入音频文件 2.加载音频文件 3.编码格式与品质级别 4. 音频性能增强 二.纹理文件 1.纹理压缩格式 2.纹理性能 ...

  8. Unity游戏积分/计分UI系统制作方法

    Unity游戏积分/计分UI系统制作方法 本篇博客将讲解游戏开发中常见的积分/计分系统的制作,看过论坛有很多这种帖子,但基本都是从一个大型系统里进行讲解,今天我把这个方法独立挖出来做个小案例,来分析这 ...

  9. Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理

    Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...

最新文章

  1. SQL Server中EXISTS结构
  2. Alpha(5/10)
  3. 直播协议HTTP-FLV标准解读与技术实现
  4. mysql数据库的三级模式_2016年计算机三级MySQL数据库试题
  5. pandas 基本使用
  6. DIY制作otto机器人
  7. 5G 时代,微软又走对了一步棋!
  8. 按摩器具抽查三成不合格 选购需注意哪些?
  9. 锚具ovm是什么意思_OVM锚具
  10. 光耦合器的工作原理和作用
  11. 2021-07-07随笔
  12. 峰会回顾 | 阿里云与StarRocks合作、开放、共赢
  13. DbVisualizer解决中文乱码问题
  14. 作业调度算法--先来先服务
  15. windows操作系统基础总结
  16. Android MultiDex 源码分析
  17. (SQL)修改表结构[字段类型]、表字段长度,
  18. 策略模式代替if-else
  19. Python函数返回值的作用
  20. MQ消息队列搭建命令及方法

热门文章

  1. 现在转行码农的成本已经非常高了,别盲目转行..
  2. notability整理归档_5000 字干货:iPad 笔记神器《Notability》详细教程,助你开启学霸之路...
  3. android 第三方recovery刷机
  4. 古镇智慧旅游建设方案ppt
  5. 饥荒联机自建服务器有什么用,联机版饥荒使用专用服务器的好处 | 手游网游页游攻略大全...
  6. 【详细教程】将Kail Linux安装入U盘并随身携带
  7. 游戏开发中的人工智能(六):基本路径寻找及航点应用
  8. win102004优化_win102004有什么新功能
  9. 临界导通模式下PFC特性分析
  10. 中国高端护肤品牌林清轩数字化特色店于广州开幕