码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • UE4 C++ 笔记(二):基础知识


    目录

     

    1.UE4 C++工程目录

    2.GamePlay框架(蓝图)

    2.1 Default Pawn Class:棋子(玩家操控的对象)

    2.2 HUD Class:UI界面管理器

    2.3 Player Controller Class:操控Pawn的类

    2.4 Game State Class:游戏状态类

    2.5 Player State Class:玩家状态类

    2.6 Spectator Class:旁观者类

    2.7 Game Instance:全局的游戏数据(Project Settings)

    3. UE4基本数据类型 

    bool

    uint8

    int32

    float

    int64

    FName

    FString

    FText

    FVector

    FVector2D

    FRotator

    FTransform

    4. UE4反射用到的宏:UPROPERTY和UFUNCTION

    4.1 UPROPERTY

    EditAnywhere:在编辑中可见,且可编辑

    EditDefaultOnly:只在类默认设置中可见

    EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行

    VisibleAnywhere:在编辑中可见,且不可编辑

    BlueprintReadOnly:蓝图中只读

    BlueprintReadWrite:蓝图中可读可写

    4.2 UFUNCTION

    BlueprintCallable:此函数可在蓝图或管家蓝图图表中执行​编辑

    BlueprintPure:此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图中图表中执行

    BlueprintImplementableEvent:需要在蓝图里面重载

    BlueprintNativeEvent:此函数旨在被蓝图覆盖掉,但是也具有默认原生实现,用于声明名声与主函数相同的附加函数。但是末尾添加了“Implementation”,是写入代码的位置,如果未找到任何蓝图覆盖,该自动生成的代码将调用Implementation方法

    CallInEditor:可通过细节(Detais)面板中的按钮在编辑器中的选定实例上调用此函数

    5. UE4枚举&结构体

    6.UE4 Actor

    6.1 什么是Actor

    6.2 什么是Component

    ⭐6.3 浅析什么是UObject

    6.3.1 反射

    6.3.2 垃圾回收GC

    6.3.3 序列化

    6.3.4 COD

    6.4 AActor生命周期浅析

    6.5 UE4代理(待更新)

    7. UE4常用类型转换

    7.0 FSTring与FText、FName、TCHAR*

    7.1 FString与FName转换

    7.2 FString、std::string、char* 转换

    7.3 FString与int32、float、bool、转换

    7.4 FString与TArray

    7.5 枚举与FString


    1.UE4 C++工程目录

    Binaries:UE编译好的二进制文件

    Config:工程配置文件

    Content:资源,.uasset/.umap

    DerivedDataCache:缓存文件,一般不用管

    Intermediate:编译C++产生的中间文件

    Saved:UE自动保存的记录文件

    Source:源代码

    .uproject:json格式文件,UE项目文件,可以用记事本打开查看并更改

    2.GamePlay框架(蓝图)

    在UE中体现为Game Mode(游戏模式):

    2.1 Default Pawn Class:棋子(玩家操控的对象)

    比如第一人称射击游戏,Pawn就是操控的人物(此时应为Character,继承自Pawn);又比如塔防游戏,或者策略类游戏,这时Pawn就是一个个单位。

    2.2 HUD Class:UI界面管理器

    比如吃鸡游戏,在大厅界面时,上面的一些商城、装备等UI标签

    2.3 Player Controller Class:操控Pawn的类

    这个很好理解,Pawn于Controller,就好比棋子于棋手

    2.4 Game State Class:游戏状态类

    比如游戏排行榜,当前游戏人数等等

    2.5 Player State Class:玩家状态类

    比如玩家血量,蓝量,攻击力等等状态

    2.6 Spectator Class:旁观者类

    很好理解,比如LOL的观战模式

    2.7 Game Instance:全局的游戏数据(Project Settings)

    一个单例模式对象,从游戏开始到结束

    3. UE4基本数据类型 

    bool

    uint8

    int32

    float

    int64

    FName

    • 大小:12bytes 
    • 不区分大小写
    • 不可变,无法被操作
    • 静态存储特性,决定了通过键值进行FName的查找速度较快
    • FName子系统的另一个功能是使用散列表为FName转换提供快速字符串

    FString

    • 大小:12 Bytes
    • 与FName和FText不同,FString可以进行搜索、修改并且与其他字符串进行比较
    • FString对象保存自己的字符数组,而FName和FText对象保存共享字符数组的指针,并且可以完全根据索引值建立相等性
    • 重载了很多std::string的API

    FText

    • 大小:24 Bytes
    • 一般用于显示和文本本地化,提供不同语言的转化

    FVector

    • 点乘、叉乘、各种变换

    FVector2D

    • 二维Vector

    FRotator

    • UE是左手坐标系:拇指X,食指Y,中指Z(中指向上摆放)
    • X:Roll翻滚角
    • Y:Pitch俯仰角
    • Z:Yaw偏航角

     【转】UE4中坐标系定义【UE4和Unity均为左手坐标系】【UE4中的Pitch/Roll/Yaw】_于杰1996的博客-CSDN博客_ue4 左手坐标系

    动图:

    1.俯仰:(Pitch)

    2.翻滚:(Roll)

    3.偏航:(Yaw)

    FTransform

    4. UE4反射用到的宏:UPROPERTY和UFUNCTION

    C++是没有反射机制的,所以UE实现了一个反射机制。

    UHT工具会扫描每个头文件中的 "xxxxxx.generated.h",并根据UCLASS()和GENERATED_BODY()生成一套反射机制。

    4.1 UPROPERTY

    Unreal Engine UProperty Specifiers | 虚幻引擎5.0文档

    EditAnywhere:在编辑中可见,且可编辑

     

    EditDefaultOnly:只在类默认设置中可见

    EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行

    VisibleAnywhere:在编辑中可见,且不可编辑

    BlueprintReadOnly:蓝图中只读

    BlueprintReadWrite:蓝图中可读可写

     

    4.2 UFUNCTION

    BlueprintCallable:此函数可在蓝图或管家蓝图图表中执行

    BlueprintPure:此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图中图表中执行

    BlueprintImplementableEvent:需要在蓝图里面重载

    BlueprintNativeEvent:此函数旨在被蓝图覆盖掉,但是也具有默认原生实现,用于声明名声与主函数相同的附加函数。但是末尾添加了“Implementation”,是写入代码的位置,如果未找到任何蓝图覆盖,该自动生成的代码将调用Implementation方法

    必须要在C++里有实现体

    CallInEditor:可通过细节(Detais)面板中的按钮在编辑器中的选定实例上调用此函数

    5. UE4枚举&结构体

    UENUM()反射宏

     

    6.UE4 Actor

    6.1 什么是Actor

    6.2 什么是Component

    ⭐6.3 浅析什么是UObject

    6.3.1 反射

    就比如在C++写的变量或者方法,在蓝图中可以看到并应用。

    6.3.2 垃圾回收GC

    大型系统难以用new/delete单个去管理内存。

     将出栈的对象标记为垃圾,在下一次循环中将标记为垃圾的对象回收。

    6.3.3 序列化

    • 序列化:把内存里的东西放到磁盘的过程叫做序列化
    • 反序列化:把磁盘里的东西读取到内存的过程叫做反序列化

    6.3.4 COD

    类默认对象:只序列化修改的部分

    6.4 AActor生命周期浅析

    Unreal Engine Actor Lifecycle | 虚幻引擎5.0文档

     

    6.5 UE4代理(待更新)

    #TODO 待补充

    单播代理

    7. UE4常用类型转换

    7.0 FSTring与FText、FName、TCHAR*

    7.1 FString与FName转换

    7.2 FString、std::string、char* 转换

    7.3 FString与int32、float、bool、转换

    7.4 FString与TArray

    7.5 枚举与FString

  • 相关阅读:
    Docker 学习笔记(五)-- 容器数据卷
    【PyQt5】一文向您详细介绍 self.setLayout() 的作用
    electron 中拦截内嵌页面 beforeunload 的弹窗提示
    四参数旋转角异常,平面坐标方位角不准确的问题
    springboot 拦截器与文件上传
    R语言拟合ARIMA模型:剔除ARIMA模型中不显著的系数、设置fixed参数指定需要被剔除的系数(参数)
    2024全国水科技大会暨高氨氮废水厌氧氨氧化处理技术论坛(四)
    霸道的 AliPaladin64.sys
    Mac的入坑指南
    vue要做权限管理该怎么做?接口权限 、按钮权限 、 菜单权限 、路由权限
  • 原文地址:https://blog.csdn.net/Jason6620/article/details/126264395
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号