• UE4 UEngine.GameInstance.WorldContext.World.Level.Actor.Component


    Engine

    UE4的最高级类是UEngine,它派生了UGameEngine和UEditorEngine2个子类,分别管理单独游戏和编辑器游戏(UE4里面的Game、Editor、PIE等等类型概念后面再做介绍)。在UrealEngine.cpp里,有一个全局变量UEngine* GEngine=NULL,我们顺着UEngine往下看。
    先看成员变量,变量非常多,挑重点看。它是最高级类,拥有管理游戏世界的能力,游戏世界的信息存放在成员变量WorldList里面,WorldList是一个FWorldContext容器数组。

    FWorldContext

    FWorldContext是UEngine用来管理世界生成、销毁、切换的类。看看它主要成员变量:
    UWorld* ThisCurrentWorld;
    UGameInstance* OwningGameInstance;

    它拥有一个UWorld,也拥有一个指向UGameInstance的指针。

    GameInstance

    UGameInstance是一个运行游戏的高级管理者。 它拥有一个FWorldContext指针,一般来说,一个游戏只会实例化一个GameInstance,生存周期持续到游戏结束,编辑器模式下,生存周期为打开Editor到关闭Editor。
    实例化的位置:GameInstance在EngineLoop::PreInit()->PreInitPostStartupScreen()->LoadModulesForProject()->…->UClass::CreateDefaultObject()

    World

    UWorld是可视化场景的最高级对象,是放置和移除关卡的地方,它拥有一个PersistentLevel和一组StreamLevel。在standaloneGame下,一般只存在一个World;在编辑器模式下,存在不止一个World,比如场景编辑、PIE、各种带渲染的交互编辑工具窗口等,都是World。
    主要成员变量:
    TArray Levels; //所有Level
    class ULevel* PersistentLevel;
    FPhysScene* PhysicsScene;

    Level

    ULevel是一个场景内容的收集者,包括光照、声音、实例化网格体等等,一些通用的内容比如光照质量,集成到WorldSetting这个类里设置。
    主要成员变量:
    TArray Actors;
    AWorldSettings* WorldSettings;
    ALevelScriptActor* LevelScriptActor;
    //关卡蓝图

    Actor

    AActor本身带有网络复制、Tick等功能。此外,它还是一个ActorComponent的容器,通过各种ActorComponent实现移动、渲染等功能。 Actor本身不具备嵌套功能,是通过SceneComponent实现的。
    主要成员变量:
    TSet OwnedComponents;
    USceneComponent* RootComponent;

    ActorComponent

    UActorComponent是所有Component的基类,它定义了一些Component通用的行为。著名的带有Transform的是SceneComponent,能够被渲染的是PrimitiveComponent。
    主要成员变量:
    AActor OwnerPrivate;*

    SceneComponent

    USceneComponent带有Transform,提供attach功能。
    主要成员变量:
    FTransform ComponentToWorld;

    PrimitiveComponent

    UPrimitiveComponent拥有一些几何形状,用来渲染或者碰撞。 它拥有很多子类,其中比较常见的是ShapeComponent、StaticMeshComponent和SkeletalComponent,其中ShapeComponent能用于碰撞,但不能渲染出来,其余两者既可碰撞也可渲染。
    主要成员变量:
    FBodyInstance BodyInstance;

    MeshComponent

    UMeshComponent是一个三角面网格体的虚基类。

    参考:
    链接: 《InsideUE4》GamePlay架构(一)(二)(三)

  • 相关阅读:
    Go语言学习(二) 函数
    自助点餐系统微信小程序,支持外卖、到店等
    【Python 零基础入门】列表 & 字典
    分布式缓存
    界面组件Telerik UI for WinForms中文教程 - 如何自定义应用程序文件窗口?
    Leetcode82删除排序链表中重复元素2
    JavaWeb复习
    5、Channel
    猿创征文|【Vue3】动态组件的使用
    WebMagic抓取医院科室,医生信息实战及踩坑
  • 原文地址:https://blog.csdn.net/qq_40541268/article/details/126262153