学习UE4框架中的标签,本篇是总结成员变量标签UPROPERTY。

引擎版本:4.12.5

前期准备:

1.新建项目,C++空模板,新建C++类,继承AActor,名称MyActor。

使用TestActor变量进行测试。

// MyActor.h

#pragma once

#include "GameFramework/Actor.h"
#include "MyActor.generated.h"

UCLASS()
class MYSTEAMONLINEC_API AMyActor : public AActor
{
    GENERATED_BODY()

public:

    AActor* TestActor;

public:
    // Sets default values for this actor's properties
    AMyActor();

    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

    // Called every frame
    virtual void Tick( float DeltaSeconds ) override;

};
// MyActor.cpp

#include "MySteamOnlineC.h"
#include "MyActor.h"

// Sets default values
AMyActor::AMyActor()
{
     // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
    Super::BeginPlay();

}

// Called every frame
void AMyActor::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

}

2.在ue4编辑器中新建蓝图BP_MyActor,继承MyActor。

UPROPERTY:

EditAnywhere

Indicates that this property can be edited by property windows, on archetypes and instances.(指出该属性可以在属性窗口,蓝图类编辑器,实例中进行修改)

UPROPERTY(EditAnywhere)
AActor* TestActor;

level中可以修改

原型中的属性窗口可以修改

EditDefaultsOnly

Indicates that this property can be edited by property windows, but only on archetypes. This operator is incompatible with the Visible* specifiers. (指出该变量只能出现在原型的属性窗口。这个操作与其他可视特性相冲突)

//与EditAnywhere冲突
UPROPERTY(EditDefaultsOnly) AActor* TestActor;

原型中的属性窗口可以修改

EditFixedSize

Only useful for dynamic arrays. This will prevent the user from changing the length of an array via the Unreal Editor property window.(只有在动态数组中有用,该标签将防止用户通过虚幻编辑器属性窗口改变数组长度)

普通数组

UPROPERTY(EditAnywhere)
TArray<int32> TestArray;

增加“EditFixedSize”标签后

UPROPERTY(EditAnywhere,EditFixedSize)
TArray<int32> TestArray;

EditInline

这个标签在4.12.5中已经没有了

EditInstanceOnly

Indicates that this property can be edited by property windows, but only on instances, not on archetypes. This operator is incompatible with the Visible* specifiers.(只能在场景中的实例的属性窗口修改,该操作与其他可视标签冲突)

UPROPERTY(EditInstanceOnly)
AActor* TestActor;

在场景中的实例属性窗口,可以做修改

在原型中已经没有该变量了

VisibleAnywhere

Indicates that this property is visible in property windows, but cannot be edited at all. This operator is incompatible with the Edit* specifiers.(可以在原型与场景中的实例的属性窗口中看到,但是不能修改,与其他修改类标签冲突)

UPROPERTY(EditInstanceOnly)
AActor* TestActor;

VisibleDefaultsOnly

Indicates that this property is only visible in property windows for archetypes, and cannot be edited. This operator is incompatible with the Edit* specifiers.(只能在原型的属性窗口中看到,但是不能修改,与其他修改类标签冲突)

UPROPERTY(VisibleDefaultsOnly)
AActor* TestActor;

在场景中的实例看不到属性了,在原型中可以看到(就不截图了)

VisibleInstanceOnly

Indicates that this property is only visible in property windows for instances, not for archetypes, and cannot be edited. This operator is incompatible with the Edit* specifiers.(只能在场景中的实例的属性窗口中看到,不能在原型中看到,不能修改,与其他修改类标签冲突)

UPROPERTY(VisibleInstanceOnly)
AActor* TestActor;

在原型的属性窗口已经看不到啦

场景实例可以看到

AdvancedDisplay

Properties are in the advanced dropdown in a Details panel.(属性在高级下拉列表中显示)

UPROPERTY(EditAnywhere,AdvancedDisplay)
AActor* TestActor;

用三角箭头进行收缩和展开

AssetRegistrySearchable

The AssetRegistrySearchable keyword indicates that this property and its value will be automatically added to the asset registry for any asset class instances containing this as a member variable. It is not legal to use on struct properties or parameters.

(指出这个属性和属性的值,为了包含到所有资源类型实例中,将自动的作为成员变量,添加到资源注册列表。在结构体属性或者参数中使用是非法的。)

不懂啊。。。

其他:

ObjectBase.h中,namespace UP,是标签的源码。

UFUNCTION

Reliable

The function is replicated over the network, and is guaranteed to arrive regardless of bandwidth or network errors. Only valid when used in conjunction with Client or Server.

UFUNCTION(Reliable, Client, Category = "Default")
void RespawnCharacter();

Server

The function is only executed on the server. Provide a body named [FunctionName]_Implementation instead of [FunctionName]; the autogenerated code will include a thunk that calls the implementation method when necessary.

ps:在参数传递时,不能使用引用,

  必须使用void,不能有返回值

//.h file
UFUNCTION(Reliable,Server, WithValidation, Category = "Default")
void RespawnCharacterOnServer();

//.cpp file
void ABasePlayerController::RespawnCharacterOnServer_Implementation()
{

}

bool ABasePlayerController::RespawnCharacterOnServer_Validate()
{
    return true;
}

Client

The function is only executed on the client that owns the Object the function belongs to. Provide a body named [FunctionName]_Implementation instead of [FunctionName]; the autogenerated code will include a thunk that calls the implementation method when necessary.

//.h file
UFUNCTION(Reliable, Client, Category = "Default")
void RespawnCharacter();

//.cpp file
void ABasePlayerController::RespawnCharacter_Implementation()
{
    UBaseGameInstance *tempGameInstanceRef = static_cast<UBaseGameInstance*>(GetGameInstance());
    tempGameInstanceRef->IsClient();
}

ue4标签测试与总结(UPROPERTY)的更多相关文章

  1. java web学习总结(二十七) -------------------JSP标签介绍

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  2. html中的a标签(超链接)的使用

    a标签即超链接,用于从一张页面链接到另一张页面.其最重要的属性是href属性,它指示链接的目标. 例如: <a href="http://www.baidu.com/"> ...

  3. &lt;button&gt;标签与&lt;input type=&quot;button&quot;&gt;标签

    <script type="text/javascript" src="/jquery-1.11.3.min.js"></script> ...

  4. JavaWeb---总结(十)JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  5. jsp的标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  6. javaweb学习总结(二十七)——jsp简单标签开发案例和打包

    一.开发标签库 1.1.开发防盗链标签 1.编写标签处理器类:RefererTag.java 1 package me.gacl.web.simpletag; 2 3 import java.io.I ...

  7. javaweb学习总结(十九)——JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  8. 夺命雷公狗---DEDECMS----11dedecms字段标签

    如果我们在开发的时候需要对获取的某个字段进行二次开发,我们可以对字段值调用某个函数来完成需求, 实例代码如下所示: <!DOCTYPE html> <html> <hea ...

  9. 夺命雷公狗---DEDECMS----10dedecms双标签

    双标签基本语法如下: {dede:标签名 参数名=“值” 参数名2=“值”...} 内容...... {/dede} 我们先来查看下手册,如下所示: 我们先来用一个channel的标签来做实例,因为c ...

随机推荐

  1. C#设计模式-责任链模式

    在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的 ...

  2. codeforces 632+ E. Thief in a Shop

    E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard ...

  3. ZooKeeper学习总结 第二篇:ZooKeeper深入探讨(转载)

    其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了.下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!. 1. 数据模型 1.1. 只适合存储小 ...

  4. Modelsim6.5在Ubuntu12.04的安装过程

    注:本人是在虚拟机Ubuntu12.04安装成功的,但是在虚拟机Ubuntu11.10却没有安装成功,具体原因至今未详,以后如果知道再补充吧.本博文主要的参考博文是http://blog.csdn.n ...

  5. 帝国备份王(Empirebak)万能cookie及拿shell

    1.伪造cookie登录系统(其实这一步多余的,大多用户连密码都没改,都是默认的123456) 登录成功设置4个cookie,看代码 function login($lusername,$lpassw ...

  6. Win10如何设置防火墙开放特定端口 windows10防火墙设置对特定端口开放的方法

    Win10防火墙虽然能够很好地保护我们的系统,但同时也会因限制了某些端口,而给我们的操作带了一些不便.对于既想使用某些端口,又不愿关闭防火墙的用户而言,在Win10系统中设置防火墙开放特定端口就非常必 ...

  7. cocos2dx 3.x(场景(层)的生命周期)

    //进入当前层初第一步始化层调用 bool GameScence::init() { if( !void init() ) { returnfalse; } log("进入当前层初第一步始化 ...

  8. 第二次sprint团队贡献分

    201406114105       董婷婷           22 201406114157       容杰龙           21 201406114343       卓炜杰       ...

  9. SQL数据库基础(八)

    连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 常用的两个链接运算符: 1.join   on 2.union     在关 ...

  10. 4种kill某个用户所有进程的方法

    在linux系统管理中,我们有时候需要kill掉某个用户的所有进程,初学者一般先查询出用户的所有pid,然后一条条kill掉,或者写好一个脚本,实际上方法都有现成的,这边有4种方法,我们以kill用户 ...