虚幻个人笔记

一、反射(Reflection)与垃圾回收(Garbage Collection)

C++本身没有像C#、Java那样的反射和垃圾回收,但虚幻本身提供了相似的功能,通过UHT进行连接。

在类上面添加"UCLASS()"宏,标明这个类参与反射和垃圾回收系统,“UPROPERTY()”标明变量,“UFUNCTION()”标明函数。

宏的括号里填写对应的参数,代表这个类、变量、函数在反射中承担什么样的反射角色。

比如:UCLASS(Blueprintable)----蓝图类,可被蓝图继承,编译代码后,可在Unreal中右键点击这个类生成蓝图类

创建蓝图类:

 

二、代码编译方式

1.在VisualStudio中编译

右键Games--生成

2.在Unreal中编译

Compile

在WIndow--Developer Tools --Message Log--Compiler Log查看log信息

三、加快Unreal编译速度

        每次编译都会将反射再次编译,为节省时间,可以在

D:\Program Files\Epic Games\UE_4.23\Engine\Binaries\Win64路径下的UnrealHeaderTool.target文件,第一行加一个空格,再次删掉也可以

四、声明与定义

在.h文件中声明,在.cpp中进行函数的定义或实现

1.生成蓝图类及在蓝图中调用函数、变量

2.在虚幻引擎中,定义bool型变量,必须以“b”开头,如:bool bIsMoving;

五、Unreal中的宏及其参数

1.UCLASS()

        UCALSS(Blueprintable)                  //可成为蓝图类

2.UPROPERTY()

        UPROPERTY(BlueprintReadWrite) //该属性可在蓝图中读写

        UPROPERTY(BlueprintReadOnly,Category = "My Variables") //只读,并添加标签

        UPROPERTY(VisibleAnywhere)                            //在任何地方都可见,一般用于组件

        UPROPERTY(EditInstanceOnly)        //只在实例上可编辑,点击生成的实例,可以编辑其对应的属性

        UPROPERTY(EditInstanceOnly,Category = "My Actor Properties | Vector")

                //  | Vector可以添加一个Vector的组

        UPROPERTY(VisibleInstanceOnly)  //只能在实例上进行只读操作

        UPROPERTY(EditDefaultsOnly)      //只能在默认模板上编辑

 

        UPROPERTY(EditAnywhere)      //在任何地方都可编辑。注意:指针类型不可以被EditAnywhere的宏定义,下图是错误示例!!!!

        UPROPERTY(EditAnywhere,meta = (ClampMin = -5.0f,ClampMax = 5.0f,UIMin = -5.0f,UIMax = 5.0f))    //这个meta可以限定在属性面板可编辑数值的范围

 

3.UFUNCTION()

        UFUNCTION(BlueprintCallable)       //该函数可在蓝图中被调用

4.UE_LOG()

        UE_LOG(LogTemp,Log,TEXT("Hello world!!"))        //LogTemp,临时Log。Log,普通Log

        UE_LOG(LogTemp,Warning,TEXT("Hello world!!")) //Warning,警告Log
        UE_LOG(LogTemp,Error,TEXT("Hello world!!"))      //Error,错误Log

        

        

5.TEXT()

        TEXT("Hello word!!") ---文本宏,参数为一段字符串

六、蓝图

按住alt键点击连线位置,可断开连接

1.自定义蓝图类

        可通过UCALSS(Blueprintable)将类生成蓝图类

2.关卡蓝图

        每个关卡都有且只有一个关卡蓝图,可实例化自制的蓝图类                                                  

        1)Event BeginPlay节点

                游戏开始时,会被Unreal包调用

        2)Construct NONE节点

                用于实例化继承自Object类的蓝图类

                可添加变量节点保存function

七、删除C++类

1.删除.h和.cpp

2.删除Binaries(二进制)文件夹

3.生成VisualStudio工程文件,然后Open

八、Actor类

1.Actor类自带的三个方法

        1)AMyActor();  //默认构造函数,里面的值如果为false,那么可以停用Tick();

        2)BeginPlay();  //游戏运行时,会调用该函数

        3)Tick();         //每帧调用该函数

2.Actor类来源

        Actor类继承自Object类,可直接生成蓝图类(鼠标点击某类,按F12,可以追踪到父类)

3.Actor蓝图类在场景中的显示

        Actor类和Actor蓝图类都可以直接拖拽到场景中,Actor蓝图类会显示为一个小球,这是Actor类生成蓝图类后,自动添加了DefaultSceneRoot组件,方便在场景中观察位置等信息,但运行后不会再显示。

 

         

        在Actor蓝图中,可以添加Static Mesh组件(静态网格),选择一个Cube网格,这样运行后就会显示一个正方体。

 

       

        也可以把某个组件拖拽到DefaultSceneRoot组件身上,这样可以替换DefaultSceneRoot成为根组件。

九、组件

1.在蓝图中添加组件

        Add Component

2.在代码中添加组件

        1)在.h中声明组件(例如静态网格组件)

        2)在.cpp中的构造函数中初始化

        3)编译通过后,生成蓝图类。组件名就是声明时的变量名。

十、基础操作

1.更换运行视角

        选择一个视角,右键Player Start--Snap Object To View

十一、命名规范

十二、Unreal中的函数

1、SetActorLocation|();    //设定位置,参数为FVector类型的参数,FVector为内置结构体

    例:SetActorLocation(FVector(0.0f));SetActorLocation(FVector(0.0f,1.0f,2.0f));

2、GetActorLocation();    //获取actor位置

        FVector placeLocation = FVector(0.0f);

           placeLocation = GetActorLocation();
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值