成员函数指针
不知道该用什么函数?
先用蓝图试下函数,因为蓝图可以过滤掉不能用的函数。
二、指向类成员函数的函数指针
定义:类成员函数指针(member function pointer),是 C++ 语言的一类指针数据类型,用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息。
基本上要注意的有两点:
- 1、函数指针赋值要使用 &
- 2、使用 .* (实例对象)或者 ->*(实例对象指针)调用类成员函数指针所指向的函数
成员函数指针
不知道该用什么函数?
先用蓝图试下函数,因为蓝图可以过滤掉不能用的函数。
定义:类成员函数指针(member function pointer),是 C++ 语言的一类指针数据类型,用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息。
基本上要注意的有两点:
UnrealHeaderTool
UBT 把代码生成可以解释的文件
UHT 是干嘛的?
UObjects 拥有的某些超能力,需要UPROPERTY,比如反射,因为C++不支持某些属性,需要自己魔改
UPROPERTY UCLASS 下一行的代码,特殊处理
UnrealBuildTool
有哪些常见的构建工具?
make linux开发
ant 安卓开发
UnrealBuildTool UE4构建工具
构建工具有什么用?
- 依赖问题
- 调用各种程序:配置文件调用
- 跨平台
各个平台不同的配置,统一管理
detail面板不显示,怎么办?
1. Camera Component 的作用?
让摄像头可以跟着玩家旋转移动,避免默认摄像头会穿模的问题。
2. EditAnyWhere 可以在蓝图中被赋值,没有详情
3. VisibleAnyWhere 可以在蓝图中更改详情信息,不能赋值
EditDefaultOnly 只能在类中修改
EditInstanceOnly 只能在实例中修改,只影响一个实例
EditAnyWhere 实例和类中都可以修改
05-创建组件
对于Class 的默认访问权限是Private
对于Struct 的默认访问权限是Public
UPROPERTY
只有变量声明了UPROPERTY才能使用UE4中UObject的特别操作,比如被蓝图访问
组件需要在构造函数中创建,才能在蓝图的编辑页面看到
寻找include头文件的路径
UEBuildModuleCPP.cs 默认路径的设置位置
加载模块,然后把模块下面的几个文件夹设置到寻址路径
没有模块,就把模块加入build.cs中
#include <studio.h> 只搜索系统路径
#iinclude "studio.h" 搜索当前路径,也搜索系统路径
UE4中变量名首字母大写
工程1秒build完成
1. UnrealHeaderTool.target 文件里面加个空格
2. SSD
3. 前向声明 (只需要一个指针类型的变量)
引入某个类,不在头文件中引入该类的头文件,只先申请
class AWeapon;
然后使用 AWeapon *Weapon;
4. Visual Assist Options设置 不要一开始解析全部文件
Performace --> Parse all files when opening a project
手工创建C++类
generated.h 是UE4自动生成的
类名和文件名不用相同
蓝图项目重写为C++项目
UMG 动画 AI都设计好了,直接上手C++就可以了
蓝图里面这几个类什么关系,要画一下,不记得了
ActionRPG 官方案例
参考价值更高
Gameplay Abilities 插件功能强大,堡垒之夜有用,带技能的游戏非常有用
如果去读一个新的项目?
先找GameMode
GameMode里面可以找到玩家控制器,玩家实体等内容
官方案例ShooterGame
新建Content Brower
如何权衡蓝图和C++?
1. 基本数据,基本类型放到C++中
这样蓝图和C++都能用
2. 资源加载放在蓝图中
因为资源路径变了,蓝图会自动更新,C++没办法做到。
3. 从蓝图转成c++
开始的时候让蓝图继承自基础C++类,到达重构点后,把蓝图部分或者全部变成C++
问题:
怎么变???
什么时候必须用蓝图?
UMG, 动画,粒子效果
编译快,崩溃少
什么时候必须用C++?
蓝图可调用函数申明:
UFUNCTION(BlurprintCallable)
其他的函数蓝图都调用不了,需要更灵活的操作,使用C++
UE4 C++ 类的层次结构
用代码找父类
找到父类之后查文档找子类
俄罗斯套娃
蓝图节点的组织方式
build.cs 工程包含的模块?
蓝图节点 对应c++中的函数。属于某个类
站在函数的角度,节点就不再是孤立的,而是有联系的。方便记忆。
蓝图节点如何记忆?
# 找到UE4中的代码
> 方便借鉴
使用ag 快速找文件夹中的文字
1. 安装cygwin
2. 在cygwin中安装silver searcher,chere
把cygwin 加入到右键菜单,方便操作
在Engine所在文件夹中,右键bash打开cygwin
ag '要搜索的字符串'
举例:
找Select方法的实现函数
ag 'return the option at index'
3. 忽略掉不要的文件夹
在Engine中加入一个.ignore文件
ThirdParty/
写入上面一行代码,就可以忽略掉ThirdParty文件夹
从蓝图跳转到源码
1. 下载debug信息,超大
下载位置:引擎下载安装选项,启动下面设置
示例版本: UE4 4.24.2
2. 下载完了,找不到文件
创建文件夹:D:\build\++ue4\sync
从cmd进入该目录
链接:https://pan.baidu.com/s/1AWptTwUESwE9C4OYvLxUiA
提取码:
3tpg