UE4基础-Debug
通过打印到屏幕代码1234check(GEngine != nullptr); // 显示调试消息五秒。 // 参数中的-1"键"值类型参数能防止该消息被更新或刷新。GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Hello World, this is FPSGameMode!"));
蓝图
打印到屏幕上
打印到具体位置:Draw Debug String:Draw string at a 3d world location
通过日志首先勾选菜单栏中Window-> Developer Tools->Output Log,显示Output Log窗口。
将信息显示到日志中,避免在游戏画面中显示过多的信息。
123456/*输入类别名称,例如LogTemp,并输入Log(日志)可以是Log、Warning(警告)或Error(错误)*/UE_LOG(LogTemp, Log, TEXT("Hello") ...
GAMES101-现代计算机图形学入门
GAMES101: 现代计算机图形学入门https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程介绍
本课程将全面而系统地介绍现代计算机图形学的四大组成部分:(1)光栅化成像,(2)几何表示,(3)光的传播理论,以及(4)动画与模拟。每个方面都会从基础原理出发讲解到实际应用,并介绍前沿的理论研究。通过本课程,你可以学习到计算机图形学背后的数学和物理知识,并锻炼实际的编程能力。
顾名思义,作为入门,本课程会尽可能的覆盖图形学的方方面面,把每一部分的基本概念都尽可能说清楚,让大家对计算机图形学有一个完整的、自上而下的全局把握。全局的理解很重要,学完本课程后,你会了解到图形学不等于 OpenGL,不等于光线追踪,而是一套生成整个虚拟世界的方法。从本课程的标题,大家还可以看到“现代”二字,也就是说,这门课所要给大家介绍的都是现代化的知识,也都是现代图形学工业界需要的图形学基础。
本课程与其它图形学教程还有一个重要的区别,那就是本课程不会讲授 OpenGL,甚至不会提及这个概念。本课程所讲授的内容是图形学背后的原理,而不是如何使用一 ...
\[UE4]UMG:如何使用动态文本
为了能够理解此页面中的内容,请确保您已掌握以下技能
掌握如何使用蓝图
了解UMG的基本使用
方式一:通过绑定函数在右侧细节面板中的Context部分下,点击Text栏右侧Bind按钮,下拉菜单,点击
该函数无需外部调用,引擎会自动调用它。外部控制可通过暴露变量,比如下图暴露了一个bool类型的变量,外界通过改变这个变量来间接控制文本。
方式二:作为一个变量勾选Is Variable,让其作为一个变量。通过Get这个变量再SetText来设置其内容而不是直接Set这个变量。
举例:
在蓝图中创建widget组件,设置其User Interface中的Widget Class,在viewport中将组件移到合适位置
创建一个UMG,添加一个Text,将它设置为变量
在蓝图的事件图表中,将widget组件拖拽过来,拖出引脚输入get user widget,创建结点
输入cast to,设置widge class
从As New引脚拖拽出Text变量
从变量结点拖拽,输入SetText
创建一个新的Text类型的变量,设置SetText节点中的In Text
\[UE4]UMG:调用UMG的两种方式
创建UMG:
在Content文件夹下新建UI文件夹(非必要)
在空白处右键,选择User Interface下的Widget Blueprint
命名为WBP_MyUMG
方式一:通过添加widget组件
添加widget组件,在其细节面板中设置Widget Class为WBP_MyUMG
通过该组件Get User Widget Object转换成Widget,再调用Cast to...转换成具体的UMG类。通过下面的AS WBP...引出可以调用该类的变量,函数
方式二:直接创建Widget创建Create Widget结点,然后设置其Class。比方式二的好处是新增新的变量直接在其中显示,如下图中的Mission Complete(该类的函数)
UE4基础-如何导入asset
创建项目之后,想给它添加其它模板的资产,你要怎么做?
A. 使用“添加/导入”按钮下的“添加内容或功能包”
B. 所有模板都可以在Epic Games启动程序的虚幻商城中下载并添加到你的项目。(下载,打开,export或migrate)
C. 你可以创建一个新项目,然后在Content Browser中复制文件。
D. 你在创建新项目时只能选择一个模板,之后无法再添加。
有多种方法可以为你的项目添加或导入资产。下面哪一种不行?
A. 从虚幻商城购买并添加资产
B. 将资产从驱动器拖拽到视口
C. 通过导入器导入自定义资产
D. 从其它项目中迁移资产
使用模板开始建立项目有哪些好处?
A. “项目模板”提供了有关如何启动该类型的项目的指示信息。
B. “项目模板”将项目设置为对应该类型的项目的最佳虚幻引擎版本。
C. 项目模板可快速启动不同类型的项目。
D. “项目模板”拥有该游戏类型或体验特有的丰富美术资产。
提示:“项目模板”提供了模板独有的默认设置和资产。这有何重要作用?
答案见文底。
通过导入器导入自定义资产
从虚幻商城中添加资产
从其它地方下载的商城资源添加到VAULT中将资源 ...
UE4基础-创建空白模板后的配置
设置默认启动地图
在 Content文件夹下创建一个Maps 文件夹,在 File 菜单中,选择 Save Current as…(将当前内容另存为),然后点击Maps文件夹。命名新地图,然后点击 Save。
从Edit菜单中,点击 Project Settings。
选项卡左侧的Project标题下,点击Maps & Modes。
在Default Maps下的Editor Startup Map 下拉菜单,选择刚才保存的地图。从现在开始,编辑器将自动加载改地图作为默认地图。
设置默认游戏模式在当前开发阶段,编辑器使用的是默认游戏模式。默认的游戏模式不是代码中的XXModeBase类
在 Content文件夹中创建Blueprint件夹。
生成代码中GameModeBase类的蓝图。右键点击 C++ Class/Project/XXGameModeBase 类,创建蓝图类(Create Blueprint class based on FPSProjectGameModeBase), 打开 添加蓝图类(Add Blueprint Class) 对话框菜单,命名后 ...
UE4基础-触发重叠事件
代码实现方式一:
通过重写继承来的NotifyActorBeginOverlap,这更易于实现
12345678//Actor.h:Public: /** *Event when this actor overlaps another actor, for example a player walking into a trigger. *For events when objects have a blocking collision, for example a player hitting a wall, see 'Hit' events. *@note Components on both this and the other Actor must have bGenerateOverlapEvents set to true to generate overlap events.*/ virtual void NotifyActorBeginOverlap(AActor* OtherActor);
举例:
12345678910 ...
UE4基础--输入绑定
项目设置打开Edit/Project Settings,设置绑定
代码实现:
函数声明不需要UPROPERTY修饰
ACharacter类中有一个SetupPlayerInputComponent函数,在该函数中实现输入名称与函数之间的绑定。设置中支持将键盘、鼠标和控制器输入映射到”友好名称”,该名称稍后可以绑定到游戏行为上(例如移动)。该名称稍后可以与事件驱动的行为绑定。
操作映射:对于像跳跃这样,按一下按键触发一次跳跃动作,使用BindAction函数来绑定。操作映射处理离散事件的输入(例如,按下为1,不按下为0),最终效果是,按下和/或释放单个键、鼠标按钮或辅助键盘按钮可以直接触发游戏行为。
轴映射:对于像向前走这样,需要一直按住按键,使用BindAxis函数来绑定。通常,轴映射轴映射会不断被轮询,从而实现无缝的移动过渡和流畅的游戏行为。硬件轴(例如游戏摇杆)所提供的输入值为程度值。虽然游戏摇杆输入方法在提供可平滑伸缩的移动输入方面很有效,但轴映射也可以将常见的移动键(如WASD键或箭头键)映射到持续轮询的游戏行为。
如果你想要了解有关玩家输入的更多信息,参阅玩家输入 ...
挑战程序设计竞赛 - 读书笔记
提前声明:大佬太强了,小白加个注释( •̀ ω •́ )y。
3.2 常用技巧精选(一)尺取法双指针法是指使用两个指针去遍历数组,有多种玩法,比如:
快慢指针:利用两个快慢指针按同方向遍历数组,经常用于区间搜索,也被称为滑动窗口或者尺取法(像个尺子一样去遍历数组)。
首尾指针:从数组的两端往彼此移动,两个指针移动的方向相反。
反转(开关问题)书中题解使用的是差分思想(什么是差分,请自行搜索学习),将对原数组的区间操作([l,r])转换为对差分数组对应区间的两端( l 和 r+1) 进行操作,从而将O(n)时间内的区间修改操作转换为O(1)的单值修改操作。
提供一个比书中更简洁的cal函数:
123456789101112131415int cal(int k, vector<int>& vtc){ int sum{}, res{}, n = vtc.size(); //差分数组, vector<int> diff(n+1, 0); //注意diff的大小为n+1,对区间[l,r]的 ...
名词解释 - 权限验证,协变逆变
JWT权限验证Bearer Authentication a bearer token is: by presenting a valid token you will be automatically authenticated, without having to match or present any additional signature or details to prove.
It is often used in the OAuth 2.0.
In practice, a bearer token is usually presented using the HTTP Authorizationheader:
Authorization: Bearer BEARER_TOKEN
JSON Web Tokens (JWT)是一种基于JSON的、用于在网络上声明某种主张的令牌(token)。
JWT通常由三部分组成: 头信息(header), 消息体(payload)和签名(signature)。
Header.Payload.Signature
HEADER:A J ...