Introduction to C++ Programming in UE4 阅读笔记

四大基类:UObject, AActor, UActorComponent, UStruct

UObject   :最基本的构建基类

UObject + UClass 提供了最主要的服务:

  属性和方法的映射(Reflection of properties and methods

  属性的序列化(Serialization of properties

  垃圾回收(Garbage collections

  根据name找到UObjectFinding UObjects by name

  可配置的属性值(Configurable values for properties

  属性和方法的网络支持(Networking support for properties and methods

  

  每个UObject的导出类都会自动创建一个单独的UClass,里面包含了关于实例的所有元数据(meta data)。UObjectUClass是一个游戏对象(gameplay object)在它生存时间内做的任何事情的根源(UObject and UClass together are at the root of everything that a gameplay object does during its lifetime)。帮助我们区别UClassUObject之间的不同地方的途径是,UClass是描述了一些东西,比如一个UObject实例长什么样子,什么属性是可以被序列化的,网络相关的东西等等。大多数游戏开发工作都不会直接从UObject继承,而是使用AActorUActorComponent。为了写游戏代码,开发者不必知道UClass/UObject的工作细节,不过知道有这两个东西存在还是有好处的。

 

AActor

  AActor的对象,是游戏体验中的一部分。AActor对象可以被关卡设计者放置到关卡中,或者在运行时通过游戏系统创建。所有继承于AActor的类的对象都可以放置在一个Level中,例如AStaticMeshActorACameraActor, APointLight .AActorUObject派生,所以它可以享受前一节提到的所有服务。AActor可以通过游戏代码(c++/蓝图)显式地回收,或者当它所属的Level对象被移除时通过标准垃圾回收机制回收。AActor负责游戏对象的高级行为。同时,AActor也是网络服务中可以被重用的对象的基类(AActors are also the base type that can be replicated during networking?)。在网络应答期间,AActor还可以为所有需要网络支持的AActor里的UActorComponent对象分发信息。

  虽然AActor拥有自己的行为(特别是通过继承得到的),但是它也可以作为UActorComponents层级的容器(特别是通过组合的)。这是通过AActorRootComponent组件来完成的,它包含了一个UActorComponent

当然,也可以包含很多个。在AActor对象被放置在Level里面之前,AActor必须至少包含一个USceneComponent对象来保证AActor能进行平移,旋转,缩放操作。

  在AActor的生存周期里,有一系列事件会被调用。下面的事件列表简单地表明它的生存周期。

  BeginPlay——当对象第一次进入游戏实体时被调用

  Tick——随着时间的流逝,每帧被调用一次

  EndPlay——当对象离开游戏空间时被调用

 

 运行时的生命周期:

时间: 2024-12-22 14:06:19

Introduction to C++ Programming in UE4 阅读笔记的相关文章

Introduction to C++ Programming in UE4——UE4官方文档翻译与理解(一)

UE4这篇官方文档大体上讲解了UE4本身的诸多特性以及如何编写基本的C++代码,对理解UE4的编程基础内容非常有帮助,还是因为没有对于的汉语翻译.所以,这里我把这篇文档翻译出来,之后还会简洁的对其进行必要的总结.由于内容比较多,会分两个部分进行编写,持续更新~ Unreal C++ is Awesome!(虚幻4的C++是了不起的) This guide is about learning how to write C++ code in Unreal Engine. Do not worry,

《STL源码剖析》---stl_tree.h阅读笔记

STL中,关联式容器的内部结构是一颗平衡二叉树,以便获得良好的搜索效率.红黑树是平衡二叉树的一种,它不像AVL树那样要求绝对平衡,降低了对旋转的要求,但是其性能并没有下降很多,它的搜索.插入.删除都能以O(nlogn)时间完成.平衡可以在一次或者两次旋转解决,是"性价比"很高的平衡二叉树. RB-tree(red black tree)红黑树是平衡二叉树.它满足一下规则 (1)每个节点不是红色就是黑色. (2)根节点是黑色. (3)如果节点为红色,则其子节点比为黑色. (4)任何一个节

《Programming Hive》读书笔记(一)Hadoop和hive环境搭建

<Programming Hive>读书笔记(一)Hadoop和Hive环境搭建 先把基本的技术和工具学好,才能更高效地思考和工作. Chapter 1.Introduction 简介 Chapter 2.Getting Started 环境配置 Hadoop版本会更新,以官方安装教程为准 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_O

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.

《代码阅读方法与实践》阅读笔记之二

时间过得真快,一转眼,10天就过去了,感觉上次写阅读笔记的场景仿佛还历历在目.<代码阅读方法与实践>这本书真的很难写笔记,本来我看这本书的名字还以为书里大概写的都是些代码阅读的简易方法,心想着这就好写笔记了,没想到竟然好多都是我们之前学过的东西,这倒让我有点无从下手了.大概像我们这些还没有太多经历的大学生,总是习惯于尽量避免自己的工作量,总是试图找到一些完成事情的捷径吧.总之,尽管我不想承认,但我自己心里很清楚,我就是这种人.下面开始言归正传,说说接下来的几章内容归纳. 这本书在前面已经分析了

《大道至简》阅读笔记1

<大道至简>阅读笔记1 不知不觉间看完了第一章,从这个章节里我看到了一些我们都明白可是却自己很难做到的道理. 书中从愚公移山的故事和编程相结合给出了编程的精义就是顺序.分支.循环,这些都是我们所熟悉的,也是老师在教学中耳提面命的,可是我们又有几个人能做到呢. 我们总是在找着各种各样的学不好学不会理由,“它太难了”,“我太笨了”,认真的想一想难道真的是它太难了或者是自己太笨了么?不,答案是否定的,追根究底是懒惰,是没能坚持.从根本上来说,不存在会不会写程序的问题,除了先天智障和后天懒惰者,这要你

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

构建之法阅读笔记05

2017.5.20 今天阅读的是<构建之法>第8章需求分析的阅读笔记,我们如果要开始做一个软件,最先要进行的就是需求分析,我们应该充分的了解我们这个软件是否具有前景,我们为用户提供的服务是不是用户所需要的,这一章详细的叙述了如何进行需求分析. 首先是获取和引导需求,我们应该找到软件的利益相关者,了解挖掘他们对软件的需求,引导他们表达出真实的需求.然后分析和定义需求,对各个方面的需求进行规整,定义需求内涵,从各个角度将需求量化,然后估计实现这些需求所需要的时间和资源,确定各个需求的优先级.紧接着

《构建之法》阅读笔记(2)

<构件之法>阅读笔记2 看了前面两章,我感觉我现阶段距离一个程序员还很远,软件工程师更是遥不可及.在学校的我学习了很多,如c++,数据结构,面向对象--学的多而不精,纵观现在我就是一个盲目学习的学生,上课时认真听了课后却没有花更多的时间去研究,遇到不懂的容易掉价死胡同,总是花很多时间闷闷思考,不到最后都没有去请教同学,去百度.看着其他很厉害的同学,自己就只能在一旁羡慕嫉妒恨.那现在在怎么样才能将自己对编程的兴趣提高,加强自己的编程思想?提高自己的价值?能够尽早地迈进程序员.软件工程师的行列之中