查看: 452|回复: 6

[游戏性指南] 【复制对象引用 | Unreal Engine】

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2016-6-27 17:00:08 | 显示全部楼层 |阅读模式



一般而言,对象引用会在 UE4 多人游戏架构中自动处理。这就是说,如果您有一个已经复制的 UObject 属性,则对该对象的引用将作为服务器分配的特意 ID 通过网络进行发送。这个特意 id 是一个 FNetworkGUID。服务器将负责分配此 id,然后向所有已连接的客户端告知这一分配。

要复制对象引用,您只需将一个 UObject 属性标记为已复制,就像下面这样:

class ENGINE_API AActor : public UObject{    UPROPERTY( replicated )    AActor * Owner;};
这时,“Owner” 属性将作为其引用的 actor 的一个复制引用。

对于通过网络合法引用的对象,必须对其提供支持以保证网络连接。要进行检查,您可以调用 UObject::IsSupportedForNetworking()。这通常被认为是一个底层函数,所以一般不需要在游戏代码中对其进行检查。

您通常可以按照以下原则来确定是否可以通过网络引用一个对象:

任何复制的 actor 都可以复制为一个引用

任何未复制的 actor 都必须有可靠命名(直接从数据包加载)

任何复制的组件都可以复制为一个引用

任何未复制的组件都必须有可靠命名。

其他所有 UObject(非 actor 或组件)必须由加载的数据包直接提供

拥有可靠命名的对象
拥有可靠命名的对象指的是存在于服务器和客户端上的同名对象。

如果 Actor 是从数据包直接加载(并非在游戏期间生成),它们就被认为是拥有可靠命名。

满足以下条件的组件即拥有可靠命名:

从数据包直接加载

通过简单构建脚本添加

采用手动标记(通过 UActorComponent::SetNetAddressable 进行)

只有当您知道要手动命名组件以便其在服务器和客户端上具有相同资源文件名称时,才应当使用这种方法(最好的例子就是 AActor C++ 构造函数中添加的组件)



   



   
【虚幻4翻译文档-复制对象引用 | Unreal Engine】[虚幻4中文文档]



      




   


      相关页面

  




       条件属性复制








      RPC




回复

使用道具 举报

0

主题

871

帖子

2891

积分

vip会员

Rank: 1

积分
2891
发表于 2016-7-2 20:26:01 | 显示全部楼层
全就行啊,,支持 一下
回复 支持 反对

使用道具 举报

0

主题

913

帖子

2981

积分

vip会员

Rank: 1

积分
2981
发表于 2016-7-4 02:59:59 | 显示全部楼层
这样的人是业界良心 有时在人人下个东西学比取经还难
回复 支持 反对

使用道具 举报

0

主题

885

帖子

2964

积分

vip会员

Rank: 1

积分
2964
发表于 2016-7-4 12:45:33 | 显示全部楼层
好棒好棒好棒,谢谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

872

帖子

2894

积分

vip会员

Rank: 1

积分
2894
发表于 2016-7-7 00:46:20 | 显示全部楼层
全就行啊,,支持 一下
回复 支持 反对

使用道具 举报

0

主题

874

帖子

2897

积分

vip会员

Rank: 1

积分
2897
发表于 2016-7-26 11:36:10 来自手机 | 显示全部楼层
怎么样呢急
回复 支持 反对

使用道具 举报

0

主题

877

帖子

2898

积分

vip会员

Rank: 1

积分
2898
发表于 2016-7-26 19:55:57 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部