app科技产品网站建设塘沽有哪些互联网公司

pingmian/2025/10/10 21:48:23/文章来源:
app科技产品网站建设,塘沽有哪些互联网公司,网站管理的主要内容,网站欢迎界面源码文章目录 前言0. 通用设置0.1 开启插件0.2 设置Viewport 1. 分场景教程1. 1 在仅使用鼠标控制的场景下Common Activatable StackCommon Activatable Widget 1.2 当焦点落到一个按钮时显示默认确认#xff08;Click/Accept#xff09;按键图标Common Input Action DataBaseInp… 文章目录 前言0. 通用设置0.1 开启插件0.2 设置Viewport 1. 分场景教程1. 1 在仅使用鼠标控制的场景下Common Activatable StackCommon Activatable Widget 1.2 当焦点落到一个按钮时显示默认确认Click/Accept按键图标Common Input Action DataBaseInput DataCommon Input Base Controller Data 1.3 即使焦点没有落到该按钮上也可以使用指定按键触发该按钮并且按钮上会显示按键提示图标(Input Action和Triggering Input Action)1.4 当前UI触发按键提示栏(Common Bound Action Bar) 2. 小结 前言 Common UI给虚幻的UI系统带来了很多新特性这些新特性往往面向不同的使用场景。目前我看到很多的Common UI教程都是把这些特性很笼统地展示一遍这就很容易造成初学者的困惑“我当前做的这些工作到底是为了实现什么”所以本文采用分场景介绍的方式希望能够帮初学者理清一下Common UI的工作逻辑。 0. 通用设置 只要使用Common UI就要做的设置 0.1 开启插件 开启Common UI插件 0.2 设置Viewport Viewport是程序运行时Widget的容器及管理器Common UI从原来的Widget继承树上又派生了新的分支新分支自然需要扩展后的新Viewport(CommonGameViewportClient)去管理。 1. 分场景教程 1. 1 在仅使用鼠标控制的场景下 如果你游戏完全用鼠标控制那么除了上述通用设置以外Common UI中最值得关注的部分就是新增的Common Activatable Widget 以及Common Activatable Stack Common Activatable Widget Common Activatable Stack Common Activatable Stack Common Activatable Stack 顾名思义就是一个栈。UI中的Widget经常会有上下堆叠的状态处于顶层的Widget处于可用状态(Activate)当用键盘或游戏手柄控制的时候它会获得控制焦点而非顶层的Widget会处于不可用状态被置灰或者隐藏。这时候我们往往要自己动手实现一个Stack来管理这些Widget的行为。Common Activatable Stack 就是Common UI为我们内置的这样一个Stack。 当Common Activatable Stack 对Common Activatable Widget进行Push Widget操作时会将原来栈顶的Common Activatable Widget进行DeactivateWidget。当然也可以手动ActivateWidget和DeactivateWidget void UCommonActivatableWidgetContainerBase::SetSwitcherIndex(int32 TargetIndex, bool bInstantTransition /* false*/) {if (MySwitcher MySwitcher-GetActiveWidgetIndex() ! TargetIndex){if (DisplayedWidget){DisplayedWidget-OnDeactivated().RemoveAll(this);if (DisplayedWidget-IsActivated()){DisplayedWidget-DeactivateWidget();}else if (MySwitcher-GetActiveWidgetIndex() ! 0){// The displayed widget has already been deactivated by something other than us, so it should be removed from the container// We still need it to remain briefly though until we transition to the new index - then we can remove this entrys slotbRemoveDisplayedWidgetPostTransition true;}}MySwitcher-TransitionToIndex(TargetIndex, bInstantTransition);} }Common Activatable Widget 只有Common Activatable Widget才可以被Common Activatable Stack 管理在Common Activatable Widget的Activation中设置ActivateWidget和DeactivateWidget时Common Activatable Widget的行为 void UCommonActivatableWidget::NativeOnActivated() {if (ensureMsgf(bIsActive, TEXT([%s] has called NativeOnActivated, but isnt actually activated! Never call this directly - call ActivateWidget()))){if (bSetVisibilityOnActivated){SetVisibility(ActivatedVisibility);UE_LOG(LogCommonUI, Verbose, TEXT([%s] set visibility to [%s] on activation), *GetName(), *StaticEnumESlateVisibility()-GetDisplayValueAsText(ActivatedVisibility).ToString());}if (CommonUI::IsEnhancedInputSupportEnabled() InputMapping){if (const ULocalPlayer* LocalPlayer GetOwningLocalPlayer()){if (UEnhancedInputLocalPlayerSubsystem* InputSystem LocalPlayer-GetSubsystemUEnhancedInputLocalPlayerSubsystem()){InputSystem-AddMappingContext(InputMapping, InputMappingPriority);}}}BP_OnActivated();OnActivated().Broadcast();BP_OnWidgetActivated.Broadcast();} }void UCommonActivatableWidget::NativeOnDeactivated() {if (ensure(!bIsActive)){if (bSetVisibilityOnDeactivated){SetVisibility(DeactivatedVisibility);UE_LOG(LogCommonUI, Verbose, TEXT([%s] set visibility to [%d] on deactivation), *GetName(), *StaticEnumESlateVisibility()-GetDisplayValueAsText(DeactivatedVisibility).ToString());}if (CommonUI::IsEnhancedInputSupportEnabled() InputMapping){if (const ULocalPlayer* LocalPlayer GetOwningLocalPlayer()){if (UEnhancedInputLocalPlayerSubsystem* InputSystem LocalPlayer-GetSubsystemUEnhancedInputLocalPlayerSubsystem()){InputSystem-RemoveMappingContext(InputMapping);}}}// Cancel any holds that were activeClearActiveHoldInputs();BP_OnDeactivated();OnDeactivated().Broadcast();BP_OnWidgetDeactivated.Broadcast();} }关于如何定义一个Common Activatable Widget在《官方项目《内容示例》中Common UI部分笔记 1.1 Activatable Widgets》一文中有较详细的叙述。 1.2 当焦点落到一个按钮时显示默认确认Click/Accept按键图标 上面是仅用鼠标的场景接下来聊的都是主要用键盘或游戏手柄的场景。 当一个按钮获取到控制焦点时按钮上显示默认的确认按键会提升玩家的使用体验。 实现这样的效果需要实现一个派生自UCommonButtonBase的按钮在UCommonButtonBase有一个UCommonActionWidget类型的InputActionWidget,从它的meta中可以看到它是一个BindWidget,也就是说允许我们在蓝图中定义一个同名即名为InputActionWidget的UCommonActionWidget。 UPROPERTY(BlueprintReadOnly, Category Input, meta (BindWidget, OptionalWidget true, AllowPrivateAccess true))TObjectPtrUCommonActionWidget InputActionWidget;在UCommonActionWidget的UpdateActionWidget方法中会从游戏的预设**(Common Input Seetings)**中读取到默认Click按键的图标显示出来这个UpdateActionWidget在很多情况下都会被调用包括按钮的Hover状态。 void UCommonActionWidget::UpdateActionWidget() {if (!IsDesignTime() GetWorld()){const UCommonInputSubsystem* CommonInputSubsystem GetInputSubsystem();if (GetGameInstance() ensure(CommonInputSubsystem) CommonInputSubsystem-ShouldShowInputKeys()){const FCommonInputActionDataBase* InputActionData GetInputActionData();if (InputActionData || (EnhancedInputAction CommonUI::IsEnhancedInputSupportEnabled())){if (bAlwaysHideOverride){SetVisibility(ESlateVisibility::Collapsed);}else{Icon GetIcon();if (Icon.DrawAs ESlateBrushDrawType::NoDrawType){SetVisibility(ESlateVisibility::Collapsed);}else if (MyIcon.IsValid()){MyIcon-SetImage(Icon);if (GetVisibility() ! ESlateVisibility::Collapsed){// The object being passed into SetImage is the same each time so layout is never invalidated// Manually invalidate it here as the dimensions may have changedMyIcon-Invalidate(EInvalidateWidgetReason::Layout);}if (IsHeldAction()){MyProgressImage-SetVisibility(EVisibility::SelfHitTestInvisible);}else{MyProgressImage-SetVisibility(EVisibility::Collapsed);}MyKeyBox-Invalidate(EInvalidateWidget::LayoutAndVolatility);SetVisibility(ESlateVisibility::SelfHitTestInvisible);return;}}}}SetVisibility(ESlateVisibility::Collapsed);} }接下来我们再看看刚才提到的 (Common Input Seetings) Common Input Action DataBase 首先我们要创建一个格式为Common Input Action DataBase的数据表备用这个数据表的作用其实就如同我们在Input或Enhanced Input中配置的按键和Action的映射表 Input Data 再回到Common Input Seetings中新建一个Common UIInput Data类的对象在其中选择刚才创建的数据表并配置如下两个选项 Default Click Action : 默认的按钮确认事件Default Back Action : 默认的返回撤回事件 Common Activatable Widget可以选择是否接受Back Action事件如果勾选Is Back Handler默认情况下接收到Back Action事件该Common Activatable Widget会被Deactivate。 Common Input Base Controller Data 在Common Input Seetings中的Controller Data下面可以就是配置针对各个平台控制器按键图标的地方 1.3 即使焦点没有落到该按钮上也可以使用指定按键触发该按钮并且按钮上会显示按键提示图标(Input Action和Triggering Input Action) 如果UI上的按钮较多或着有些常用按钮距离较远我们常常希望即使控制焦点没有在那个按钮上也能够用键盘或游戏手柄的某个特定按键触发这个按钮这就是Common UI中的Input Action类似快捷键。 实现Input Action的也要基于上面1.2中的若干设置接下来实现Input Action有两种方式 使用名为InputActionWidget的UCommonActionWidget也就是上文中可以接受并显示默认Click事件图标的那个UCommonActionWidget这时只需要在Triggering Input Action中配置触发它的事件即可配置方法和上文中配置默认事件的方法一样。注意Input Action无论是否获得控制焦点均会显示。这说明它就不再显示默认Click图标了。 2. 自定义一个UCommonActionWidget 这时我们需要在构造函数(Construct)或预构造函数(Pre Construct)中将它设置给Triggering Input Action 1.4 当前UI触发按键提示栏(Common Bound Action Bar) 当一个UI有很多按钮都有Input Action触发键的时候我们想在一目了然的地方比如屏幕左下角做一个显示全部或部分触发键图标的提示栏。 这个功能的实现需要用到Common UI为我们提供的Common Bound Action Bar Common Bound Action Bar中的按键图标以及按键功能提示依赖于Action Button Class中提供的Common Bound Action Button类这个类派生自刚才我们使用过的UCommonButtonBase 它们的工作逻辑也是一样的只不过里面又多了一个UCommonTextBlock类型的Text_ActionName和InputActionWidget一样Text_ActionName也是和蓝图绑定的用于显示按键说明文字。 protected:UPROPERTY(BlueprintReadOnly, meta (BindWidget), Category Text Block)TObjectPtrUCommonTextBlock Text_ActionName;如果一个按钮的触发按键想显示在Action Bar中只需要配置其Triggering Input Action并勾选下面的选项即可。 2. 小结 码了这么多字好累

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子商务网站建设与管理第四章答案网站建设seo方案

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:Java练习题 💬个人格言:不断的翻越一座又…

网站页面模板页面布局网站搭建服务合同

这里不再解释vDSO的概念,而直接谈其意义:vDSO类似一个信息公告板,用户可以直取所需,而无需为此办理任何手续。vDSO相当于内核直接暴露出来的一个C库,作为GLIBC的补充。…类似gettimeofday之类的调用,每次都…

好看的手机网站布局沈阳沙盘模型公司

SQL是另一个门类的开发语言,是专用于结构化数据库操作的专用语言。SQL不可能单独开发系统,但是做数据库方面的系统不懂SQL也不行。市面上很大部分开发岗位(后台)都是要和数据库打交道的,所以SQL必须掌握。 好消息是&am…

创意建设机械网站wordpress 加分类

本文将简单介绍loglus框架的基本使用,并给出demo 文章目录 前言Loglus常见用法自定义日志级别使用字段钩子输出到多个位置使用钩子实现自定义日志处理demo 前言 Logrus 是一个用于 Go 语言的结构化日志框架,它提供了丰富的日志级别、钩子和格式化选项。…

云主机开网站教程射阳建设局网站

基于 eclipse-temurin 构建国内时区,地区,语言的镜像 使用场景自定Dockerfile构建自己的基础镜像构建本地镜像推送远程仓库 使用场景 在给应用构建自定义镜像时,往往需要在每次构建时去调整时区,地区这些东西;每次构建…

人网站建站想要给网站加视频怎么做

1 STL 的数值算法概述 STL 的数值算法提供了一系列用于处理数值计算的模板函数。这些算法主要针对容器中的元素进行数学运算和统计计算,使得程序员能够高效地处理数值数据。 STL 数值算法包括了一系列功能丰富的函数,例如 std::accumulate 用于计算容器…

惠州哪家做网站好河南那家做网站实力强

本篇文章 经过许多次的测试和修改已经完成了在Ubuntu7.10 下 安装配置 ApachePHPMySQL的所有的工作. 1、在Ubuntu7.10 下安装 Apache2PHP5MySQL sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql phpmyadmin在下载来自动安装配置的时候…

专业电商网站建设多少钱阿里巴巴外贸圈

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

互联网站备案信息重庆施工许可证查询

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

网站百度seo推广怎么做网站联系我们模板

一、篇头 全志H713平台,作为FHD投影的低成本入门方案,其公板上也配齐了许多投影使用的模组,本文即介绍投影仪调焦所用的步进电机,此模组的驱动原理、配制方法、调试方法。因为条件限制,本文采用的是H618香橙派Z3平台&…

网站页面策划怎么做北京66中网站做的不怎么样呀

DES: 这是一个新的游戏。给你一套牌、编号从1到100000.正常来说。你手中的牌和这次翻的牌是一样的,就会加一分。但是。如果是999的话。加三分。所以问你最大的分是多少。 貌似是简单的DP吧。(DP菜鸟...再简单我也不会...T_T...)于是...我看懂…

合适做服装的国际网站东莞企业网站建设开发

1、基本定义 广义定义:商品是为了出售而生产的劳动成果,人类社会生产力发展到一定历史阶段的产物,用于交换的劳动产品。 电商商品基本概念: 商品类目商品属性销售属性商品编码&商品规格编码SKU和SPU… 2、商品类目 电商平…

什么是网站建设方案书做网站项目的流程

一、面向对象类的设计:在程序开发中,要设计一个类,通常需要满足以下三个要求:1、类名 这类事物的名字,满足大驼峰命名法2、属性 这类事物具有什么样的特征3、 方法 这类事物具有什么样的行为eg:小明今年18岁&#xf…

在潮州哪里找做网站的wordpress二次开发手册chm

题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,....,n,最终形成一个 m 行矩阵。 小明对这个矩阵有些要求:…

app网站平台建设方案湘潭做网站 磐石网络很专业

一般来说绝大部分PC上装的系统均是windows&#xff0c;为了开发linux程序&#xff0c;会在PC上安装一个Vmware的虚拟机&#xff0c;在虚拟机上安装ubuntu18.04&#xff0c;由于windows上的代码查看软件、浏览器&#xff0c;通信软件更全&#xff0c;我们想只用ubuntu进行编译&a…

用sql2000做网站建设银行手机银行网站用户名

SELinux 安全模型——TE 首发公号&#xff1a;Rand_cs 通过前面的示例策略&#xff0c;大家对 SELinux 应该有那么点感觉认识了&#xff0c;从这篇开始的三篇文章讲述 SELinux 的三种安全模型&#xff0c;会涉及一些代码&#xff0c;旨在叙述 SELinux 内部的原理 SELinux 提供…

企业营销网站建设公司哪家好营销软文是什么意思

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/369/F 来源&#xff1a;牛客网 题目描述 现在你有 n 把灵剑&#xff0c;其中选择第i把灵剑会得到的 wiw_iwi​ 攻击力。 于此同时&#xff0c;还有q个约束&#xff0c;每个约束形如&#xff1a; …

wordpress改密码上海有什么seo公司

1.同步获取短视频 1.只要播放地址对Json数据解析&#xff0c;先把列表找出&#xff1a; 2.只想要所有的播放地址&#xff0c;通过列表表达式循环遍历这个列表拿到每个对象&#xff0c;再从一个个对象里面找到Video,再从Video里面找到播放地址(play_addr),再从播放地址找到播放…

电子商务网站建设 精品课上海建设摩托车官网报价

背景 项目需要使用微信公众号发消息&#xff0c;然后就来接入这个微信授权啦&#xff0c;微信公众号发消息前提是还需要用户先关注公众号~ 微信授权是有点恶心的&#xff0c;真的真的需要先配置好环境&#xff0c;开发的话目前是可以使用测试号申请公众号使用测试号的appid~ …

亿联时代网站建设游戏搭建平台

核心原理就是在四条边、四个顶点加上透明的div&#xff0c;给不同方向提供按下移动鼠标监听 &#xff0c;对应计算宽度高度、坐标变化 特性&#xff1a; 支持设置拖拽的最小宽度、最小高度、最大宽度、最大高度可以双击某一条边&#xff0c;最大化对应方向的尺寸&#xff1b;再…