UE4《大象无形》学习笔记

学习资料:《大象无形》罗丁力

学习计划:看当日计划行事

目录

第1章 开发之前——五个最常见基类

UObject

Actor

Pawn

Character(继承Pawn)

Controller

总结

 

第2章 需求到实现

第3章 创建自己的C++类

虚幻引擎类命名规则

第4章 对象

常见类对象的产生方法

类对象的获取

类对象的销毁

 

第5章 从C++到蓝图

UPROPERTY宏(变量)

UFUNCTION宏(函数)

第6章 UE4游戏性框架概述

行为树

广义的客户端-服务端模型

第7章 引擎系统相关类

在虚幻引擎4中使用正则表达式

FPaths类的使用

XML与JSON(TODO:解析)

文件读写与访问(TODO:API熟悉)

读写配置GConfig文件(TODO:就是Unity中的.Asset)

UE_LOG

字符串处理

编译器相关技巧


第1章 开发之前——五个最常见基类

  • UObject

    • Garbage collection垃圾收集
      • C++释放资源的解决方案,①继承UObject ②非UObject可以采用智能指针
    • Reference updating引用自动更新
    • Reflectio反射(TODO:第二章即将学习)
    • Serialization序列化:保存资源
    • Automatic updating of default property changes自动检测默认变量的 更改
    • Automatic property initialization自动变量初始化
    • Automatic editor integration和虚幻引擎编辑器的自动交互
    • Type information available at runtime运行时类型识别
      • UE4有自己的类型转换方案,Cast(OriginType)
    • Network replication网络复制
      • 构造函数会调用两次,自动处理变量同步是什么意思?P26
  • Actor

    • 它能够被挂载组件,但不是组件。组件都以U开头而不是A
  • Pawn

    • 国际象棋中的“棋子”,必须要被Controller所操控,可以是玩家也可以是AI
  • Character(继承Pawn)

    • 有特殊的Movement组件,提供了一个基于胶囊体的角色移动,包括了移动和跳跃功能
  • Controller

    • 控制Pawn和Character
    • AIController:使用UE4的行为树/EQS环境查询系统
    • PlyaerController:绑定输入,转化为对Pawn/Character的函数调用
  • 总结

    • M(Pawn)V(Pawn带的动态网格组件)C(Controller)

 


第2章 需求到实现

  • 需求人持有武器,发射子弹
  • 武器继承Actor,子弹继承Actor,人继承Character

第3章 创建自己的C++类

  • 继承UObject的类,类名上方需要加入UCLASS宏
  • 虚幻引擎类命名规则

    • F:纯C++类
    • U:继承UObject
    • A:继承
    • S:Slate空间相关类
    • H:HitResult相关类

第4章 对象

  • 常见类对象的产生方法

    • 如果你的类是一个纯C++类型(F开头),你可以通过new来产生对象。
    • 如果你的类继承自UObject但不继承自Actor,你需要通过NewObject函数来产生出对象:NewObject()
    • 如果你的类继承自AActor,你需要通过SpawnActor函数来产生出对象:GetWorld( )->SpawnActor( )
    • 如果你需要产生一个Slate类,要么你在做深入开发(源码开发),要么UE版本过老
       
  • 类对象的获取

    • for(TActorIterator Iterator(GetWorld());Iterator;++Iterator)
       { 
          ...//do something 
      }
    • *Iterator访问对象,或者Iterator→function()
  • 类对象的销毁

    • 纯C++类
      • (TODO:验证)
      • 不是用new分配,会自动释放
      • 如果是new分配,尽量用智能指针TSharedPtr YourClassPtr=MakeShareable(new YourClass());
    • UObject类
      • 自带垃圾回收机制(智能指针)
    • ACtor类
      • MyActor->Destroy();

 


第5章 从C++到蓝图

  • UPROPERTY宏(变量)

    • 变量注册到蓝图中:UPROPERTY(BlueprintReadWrite, VisibleAnywhere, Category = "Object")
    • 变量到处可见:UPROPERTY(EditAnywhere, Category = Collectable)
  • UFUNCTION宏(函数)

    • 注册函数到蓝图:UFUNCTION(BlueprintCallable,Category="Test")

第6章 UE4游戏性框架概述

  • 行为树

    • 为什么选择行为树?UE3还是状态机,行为树“退行”特点,“逐个尝试,不行就换”,符合人类的思维方式。熟悉行为树的框架后,能更加快速地编写AI代码
    • 曾经在Unity学习过Behaviour Designer,主要是涉及了一些节点和装饰器。这个应该会成为以后的研究重点,概念感觉不是特别难理解,期待以后的学习,很有趣
  • 广义的客户端-服务端模型

    • 客户端是对服务端的拙劣模仿,不再时刻去"同步",而是去"预测",“模仿”

第7章 引擎系统相关类

  • 在虚幻引擎4中使用正则表达式

    • 匹配CDEFGH,模式串和匹配串,想起了KMP算法,啧啧啧,整活
      void AMyActor::hhhh() {
          FString TextStr("ABCDEFGHIJKLMN");
          FRegexPattern TestPattern(TEXT("C.+H"));
          FRegexMatcher TestMatcher(TestPattern,TextStr);
          if (TestMatcher.FindNext()) {
              UE_LOG(LogTemp, Warning, TEXT("找到匹配内容 %d -%d"), TestMatcher.GetMatchBeginning(), TestMatcher.GetMatchEnding());//输出 找到匹配内容 2-8 
          }
      }
  • FPaths类的使用

    • 具体路径类,如:FPaths::GameDir()可以获取到游戏根目录
    • 工具类,如:FPaths::FileExists()用于判断一个文件是否存在
    • 路径转换类,如:FPaths::ConvertRelativePathToFull()用于将相对路径 转换为绝对路径
  • XML与JSON(TODO:解析)

  • 文件读写与访问(TODO:API熟悉)

  • 读写配置GConfig文件(TODO:就是Unity中的.Asset)

  • UE_LOG

    • 查看
      • Game模式 在Game(打包)模式下,记录Log需要在启动参数后加-Log
      • 编辑器模式 在编辑器下,需要打开Log窗口(Window->DeveloperTools->OutputLog)
    • 使用Log
      • UE_LOG(LogMy, Warning, TEXT("Hell World")); 
      • UE_LOG(LogMy, Warning, TEXT("Show a String %s"),*FString("Hello")); 
      • UE_LOG(LogMy, Warning, TEXT("Show a Int %d"),100);
      • 总结:第一个参数自定义,第二个参数Log灰,Warning黄,Error红
  • 字符串处理

    • FName:const 类型的 string,大小写不敏感
    • FText:不支持修改
    • FString:支持修改,但开销性能比上面两种要大
  • 编译器相关技巧

    • Images:图片的读取和类型转换

第8章 模块机制(后面的东西学起来有点虚,没把握,以后再来)

  • 模块简介

    • 在不同模式(debug,release)下的包不同,引入了模块j机制
  • UBT(Unreal Build Tool)
    •  

你可能感兴趣的:(UE4)