2024年Linux最新小白入门UE5(程序员开发方向),真是经典中的经典

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

表示小数点后最多6位的小数

矢量(Vector)

表示在三维空间中的坐标(x,y,z),也可用4通道RGBY表示颜色。

旋转体(Rotator)

(F,Y,R) 分别表示三维空间中绕x、y、z轴的旋转值

变换(Transform)

包含矢量、旋转体、缩放的集合

字符串(String)

例如 Hello World 之类的一组字母数字字符(string)。

命名(Name)

用于在游戏中识别事物的一段文本,一般用于给变量命名,速度是最快的。它不可操作,用法较少,如等于、不等于。

           

文本(Text)

向用户显示的文本,储存本地文本信息。下面介绍几种和文本有关的节点。

创建文本

大小写转换

移除空白字符

判断两文本是否相等(大小写)

判断文本是否来自字符串表

Out Table Id输出字符串表的存储路径 Out Key输出索引值 Return Value输出true或false

其余文本函数看介绍就知道大义

三种容器

主要有数组、集合、字典(映射)三种类型,下面将详细介绍。

数组(Array)

数组是同一种类型的数据的集合。在创建变量时,点击变量名称旁的图标即可创建数组。

数组索引

什么是索引?索引是用来快速访问数据库表格或者视图里的数据,需要存储空间。需要注意的,数组中的值的索引值是从0开始的 ,这意味着第一个索引是 0 而不是1。

Get(获取)

Get(获取) 节点取入一个数组和一个整型值,该整型值用作为索引编号。然后,它返回在索引编号处找到的数组值。

Add Item(添加项目)

Add Item(添加项目) 取入一个数组和一个变量。它将该变量插入到数组的尾部,并相应地增加数组的大小。

Clear(清除)

Clear 节点将清除相连接的数组中的所有数据,重置数组,并删除数组中的所有索引值。

Contains Item(包含项目)

Contains Item(包含项目) 节点允许搜索一个数组来查找特定项目。如果找到了该项目,那么该节点则输出True,否则会输出False。它不会返回找到的该项目所处的索引值。

Filter Array(过滤数组)

Filter Array(过滤数组) 节点取入一个类型为Actor(或其任何子项)的数组,并基于输入的Class(类)过滤该数组。所得结果是一个新数组,仅包含原始数组中和类的类型相匹配的项目。

Find Item(过滤项目)

Find Item(过滤项目) 节点取入一个数组和一个变量,然后查找在数组中第一次找到那个变量的值时该值所处的索引编号

Insert Item(插入项目)

Insert Item(插入项目) 节点取入一个数组、一个变量值和一个整型值(索引编号)。然后,它把该变量的值插入到数组中的该索引值指定的位置处。

Last Index(最后一个索引值)

Last Index(最后一个索引值) 节点返回数组中最后一个值的索引编号。

Length(长度)

Length(长度) 返回数组的大小或数组中元素项的个数。如果数组中有 N 个对象,那么 Length 将返回 N , 而数组的有效索引值是从 0 到 N-1 。

Remove Index(删除索引)

Remove Index(删除索引) 节点通过使用项目的索引编号来从数组中删除那个项目。所有其他的索引编号将会自动更新来弥补该空缺。

Array_RemoveIndex.png

Remove Item(删除项目)

Remove Item(删除项目) 将通过取入一个变量值来从数组中删除一个项目。如果在数组中找到了那个值,则删除它。所有其他的索引编号将会自动更新来弥补该空缺。这个节点具有布尔值输出,如果找到了该项目并将其删除了,则返回True。

Array_RemoveItem.png

Resize(调整大小)

Resize(调整大小) 节点将取入一个数组和一个整型值,该整型值为该数组的新的容量大小。如果调整大小后的数组小于原始数组,那么所有不适合调整后的数组的元素项都将会丢弃。如果调整大小后的数组大于原始数组, 则会在数组尾部添加空元素项。

Set Array Elem(设置数组元素)

Array Elem(数组元素) 允许您将一个数组的一个特定索引设置为特定的值。

集合(Set)

集合与数组的区别主要在于,集合中不能有重复的元素,且集合的处理速度比数组更快。集合没有get,如果想获取其特定值,需要通过To array转换为数组后再操作。

字典/映射(Map)

字典的定义,同样使用{},不过存储的元素是一个个的: 键值对(key不能重复,重复添加等同于覆盖原有数据)(通过字典可以通过key取出value)字典的key和value可以是任意数据类型(key不能是字典)。

Keys将字典中所有键值转换为数组,Values将数据值转换为数组,Find用于寻找与提供键对应的值。

小节

1.Array可以有相同元素,Set和Map不能有相同元素

2.Set和Map的速度大于Array(二叉树),但Array自由度高

3.Map用于数据对;Set用于数据的布尔运算;Array用于储存数据集合

循环
branch

分支,类比if()语句。condition不勾选时,condition处输入真执行true,假执行false。

for each loop

循环,类比for()语句。Exec为开始执行,Loop Body为循环体,Array为要循环的数组,ArrayElement为数组中该数据的值,Array Index为索引值,Completed为循环结束。

for loop

指定循环开始和结束的索引

for each loop with break

带有打断的for() 当Break执行时跳出循环至Completed

revere for each loop

数组倒叙从后往前循环

while loop

类比while()语句,condition用于判断何时结束循环

流程控制节点
Sequence

按顺序执行

Do N

执行给定次数N,执行完N次后必须触发Reset才能执行下N次。

Do Once

只执行一次 Reset后再执行一次

Do Once MultiInput

多通道只执行一次

Flip Flop

在A、B之间循环执行,若执行A输出true,B输出false。

Gate

门打开时执行,关闭时不执行。Taggle为在开、关之间循环。

MultiGate

Index指定从哪个out开始执行;Reset复位;random随机,若勾选此项,将随机从哪个out开始执行;loop循环如果勾选,将按照执行顺序循环执行。

Retriggerable Delay

无需复位,每执行一次,延时指定事件后,再执行后续操作。

Delay Until Next Tick

这一帧不执行,下一帧才开始执行。

结构体和枚举
结构体(Struct)

结构体是数据集合,而数据可以是变量,也可以是容器。

获取结构体值用Break

枚举(Enum)

官方一点说,枚举是具有不可变性的可被列举的集合(不能无穷)。通俗来说,枚举就是一个一个列出来。理论上可以用来代替枚举类的方法有很多种,如字典,但都存在着一些问题:

1.枚举值可以修改 (别人随便改岂不是很危险)

2.用类定义的话,这些枚举功能的类可以被实例化

3.枚举值是否重复无法检查 (这玩意写错了再调错了完蛋)

因此,使用枚举有以下优点:

1.不能被继承

2.定义之后不能在类内修改

3.枚举名称不能重复(这点和字典倒是一样的)如果名称重复则会覆盖

4.使用@unique可以识别值是否重复

在UE5中,枚举一般搭配switch使用,只运行指定的。

事件、函数、宏、事件分发器
事件

右键添加节点,在“添加事件”一栏中,显示出了UE5自带的事件,如事件开始、事件结束、事件销毁、事件Tick(每帧执行)等。也支持自定义事件,自定义事件可以在函数中被调用**。**

函数

除了UE5提供的函数外,也支持自定义函数。

宏可以有多个输入执行Exec和多个输出执行Exec,也可以有多个输入和多个输出。本质上,宏和函数都是为了封装代码,但是宏的代码封装能力要强于函数。因为函数只能有一个输出,如果需要两个或多个输出时,可以使用宏做一些简单的运算。

事件分发器

创建事件分发器

事件分发器的作用

发信者利用事件分发器 发送消息给世界;发信者无法从接收者那里获取到任何信息即返回值、也不知道谁收到了消息;带有信息接收器的人,会接受到该消息并执行后续动作,比如:BOSS死亡引起灯灭、草燃、音乐停、重见天日等。事件分发器作为一种常用的蓝图通信节点,在下节将详细介绍。

常用的蓝图通信方式

蓝图间通信蓝图通信的一部分。它们各自都有很多种方法来实现需求。对于蓝图间通信而言,我们要学习的不仅有通信方法,还有通信方式。从通信方法来看,蓝图间通信五花八门,有很多组合方式。但从通信方式来看,蓝图间通信只有两类:一类是一对一通信、另一类是一对多通信。

1.直接引用

直接蓝图间通信的本质是一对一通信。直接蓝图间通信用一句话概括就是:蓝图A通知场景中的蓝图B执行某个流程。对于蓝图A而言,它可以是场景中蓝图(Blueprint Actor),也可以是关卡蓝图(Level Blueprint)。对于 蓝图B 而言,它必须是一个场景实体(Actor)。因为通信一词也暗含了“两个对象之间发生的某事”这一意义。

对于蓝图A想要找到蓝图B而言,它也需要先找到蓝图B所属的类型(Class),例如蓝图B属于类型K,如此才能缩小检索范围,定位蓝图B的准确对象。对于蓝图A 来说,仅仅锁定 蓝图B 所属类型也不够,蓝图A 需要指认类型K中特定的 蓝图B,而不是蓝图C、蓝图H或蓝图X。所以可以通过以下流程实现这一查找过程:(从本质上来说,每个蓝图都是一个类,上图中的 BP_A_Child 就是 BP_A 派生出的一个子类。我们从场景中收集 BP_A Actors,然后再在 BP_A Actors 中筛选 BP_A_Child,最终找到 BP_A_Child Actor。)

2.事件分发器

事件分发器是名副其实的一对多通信。可以把事件调度器想象成一个插线排座,不同的蓝图可以在上面自由绑定解绑 一个个自身的事件(Event),当我们给这个插线排座通电时,目前绑定在这个排座上的事件都会被激活。

事件调度器很适合用于整合不同蓝图对于同一个事件的不同反应。将蓝图BCD… 对于在蓝图A中的事件X 发生时做出的反应事件,绑定在蓝图A事件X调度器上,如此,当蓝图A的事件X被触发时,蓝图BCD…中的相应事件也会被触发。

事件调度器是一个非常方便和灵活的通信功能,我们甚至可以在每次激活事件调度器后,对其上的系列事件进行重新解绑和绑定,这样下次再激活事件调度器时,执行的又是不同的事件。

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

度器是一个非常方便和灵活的通信功能,我们甚至可以在每次激活事件调度器后,对其上的系列事件进行重新解绑和绑定,这样下次再激活事件调度器时,执行的又是不同的事件。

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

[外链图片转存中…(img-3Badz2bX-1715210332825)]

给大家整理的电子书资料:

[外链图片转存中…(img-WnaWpXwf-1715210332826)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值