zoukankan      html  css  js  c++  java
  • UE4-基类

    • UE4-基类
    • Time:2020年10月15日11:10:05
    • Author: Yblackd


    1. 类

    ​ 从大部分Gameplay类可以派生出4中主要类型的类。分别是:

    • UObject

    • AActor

    • UActorComponent

    • UStruct

    当然也可以创建不继承任何父类的类,但它们不会参与到引擎内部的构建中。

    1.1 UObject

    ​ 虚幻引擎中的基本构建块叫做UObject,该类结合UClass使用,可以提供引擎中的多个最重要的基本服务:

    • 反射属性和函数
    • 序列化属性
    • 垃圾回收
    • 按名称查找UObject
    • 属性的可配置值
    • 属性和函数的联网支持

    ​ 从UObject派生的每个类都会创建有一个UClass,UClass包含有关该类实例的所有元数据。UObject和UClass一起位于Gameplay对象在其生命周期所有作用的最根部位置。UClass描述的是UObject实例的样子、可序列化和联网的属性等。但是大多数Gameplay开发不会直接从UObject派生,而是从AActor和UActorComponent派生。

    1.2 AActor

    ​ AActor派生自UObject,它由关卡设计师放在关卡中,或者通过Gameplay系统在运行时创建。可以放入关卡中的所有对象都是派生自AActor。AActor可以通过调用代码(C++或蓝图)销毁,或者在所属关卡从内存中卸载时通过标准的垃圾回收机制销毁。
    AActor可以通过派生子类实现特殊化,也可以通过复合(充当UActorCOmponent的层级容器)实现特殊化。复合的过程通过AActor的RootComponent成员实现,它包含一个UActorComponent,而UActorComponent包含许多其他成员。在可以将AActor放入关卡之前,它必须包含至少一个USceneComponent,USceneComponent包含该AActor的平移、旋转、缩放。

    1.3 UActorComponent

    ​ UActorComponent具有自己的特殊行为,可以为不同类型的AActor提供相同的功能。如:粒子特效等。AActor通常提供与该类型对象特征有关的高级行为功能,而UActorComponent通常用于提供可能与该对象类型特征不相关的特殊行为功能。UActorComponent可以成为AActor的根组件,也可以与其他组件相连接,一个组件只能连接到一个父组件或Actor,但可以连接多个子组件。子组件的位置、旋转和缩放是相对于父组件或Actor的。

    • ActorComponent 是组件的基础类。
    • 拥有变形的 ActorComponent 被称为 SceneComponents
    • 可被渲染的则称为 PrimitiveComponents

    1.4 UStruct

    ​ 想要使用UStruct的话,不必从任何特定类扩展,只需要用USTRUCT()标记该结构体即可,引擎构建工具会自动完成基本构建工作。与UObject不同的是UStruct不会被垃圾回收。如果创建了UStruct的动态实例,必须自行管理其生命周期。UStruct应该是纯传统数据类型,包含UObject反射支持,可以在虚幻编辑器、蓝图操控、序列化等中编辑。

    2. 类命名前缀

    ​ 虚幻引擎提供了一些在构建过程中自动生成代码的工具,这些工具对类的命名有一些默认规则。如果命名不符合默认规则,则会触发警告或错误。规则如下:

    • 派生自 Actor 的类带 A 前缀,如AController。
    • 派生自 Object 的类带 U 前缀,如UComponent。
    • Enums 的前缀是 E,如EFortificationType。
    • Interface 的前缀通常是 I,如IAbilitySystemInterface。
    • Template 的前缀是 T, 如TArray。
    • 派生自 SWidget的类(Slate UI)带有前缀 S,如SButton。
    • 其他类的前缀是 F,如FVector。

    3. 常见基类

    • UObject
    • AActor: 能够挂载组件
    • Pawn
    • Character
    • Controller

    3.1 另一种理解

    • Pawn: 肉体
      • 没有灵魂的人也可以当做Pawn,类似兵马俑
      • 下棋时,棋子也可以当做Pawn
      • 游戏时,英雄也可以当做Pawn
    • Character
      • Character继承Pawn
      • 区别联系:Character提供一个特殊组件Character Movement(移动、跳跃等)
      • 如果你的人物是在秦始皇陵的兵马俑便可以继承Pawn;如果你的人物是秦朝活着的兵马俑,便需要继承Character;(秦始皇陵不需要移动,秦朝的需要移动)
    • 三者关系类似MVC架构
      • Controller 对应 MVC的 Controller
      • Pawn 对应 MVC的 Model
      • Pawn挂载的一些组件 对应 MVC的 View(个人感觉Actor对应View更正确)

    4. 参考

    参考链接:https://blog.csdn.net/u011476173/article/details/98039909

    参考书本:《大象无形:虚幻引擎程序设计浅析/ 罗丁力,张三著》——北京:电子工业出版社

  • 相关阅读:
    SQLiteStudio免费的mac下的sqlite 客户端工具
    pip python mysqlclient 报各种错
    python Flask安装
    配置本地资源映射路径 addResourceHandlers
    微信支付 统一下单 签名错误
    utf8mb4_bin与utf8_genera_ci
    Java中Synchronized的用法(简单介绍)
    javaScript正则表达式的使用
    中文正则表达式匹配-正则中文匹配
    excel之CMMI-FP功能点估算辅助生成DET、RET、FTR、FP
  • 原文地址:https://www.cnblogs.com/yblackd/p/14533364.html
Copyright © 2011-2022 走看看