UE4学习

虚幻中的基本的类:UObject,AActor,UActorComponent

UObject:所有类的基类,但是从这个类派生的子类对象,是不能直接放到level中的,必须属于Actor才可以放到level中。

AActor:继承自UObject,是所有可以放到level中的对象的基类。可以理解成一个容器,包含了很多组件,至少包括一个USceneComponent。

UActorComponent:UObject的子类,主要作为Actor的组件,用来控制Actor移动,渲染Actor等等。主要有两种基本的组件USceneComponent和UPrimitiveComponent。

USceneComponent:拥有一个transform,定义了位移,偏转,缩放。

UPrimitiveComponent:具有某种形式的表现,如网格,粒子等可见的东西。

 

实例化对象:

UObject:

NewObject<class>()

NewNamedObject<class>()

ConstructObject<class>()

AActor:

UWorld::SpawnActor()

SpawnActor<class>();

 

同步:包括对象同步,属性同步和函数同步

对象同步:

AActor可以被设置为可同步的,注意只能从服务器同步到所有客户端,SetReplicates()。如果设置为可同步的,当在服务器上生成这个actor时,它会被发送到客户端(客户端会生成一个一模一样的副本);如果actor的属性被标记为可同步的,那么当这些属性在服务器上改变时,会同步更新到客户端。

UActorComponent也可以被设置为可同步的,SetIsReplicated()。当actor创建一个组件后,把它设置为可同步的之后,客户端就会自动创建一个一模一样的组件副本。当组件的属性被标记为可同步的,那么当这些属性在服务器上改变时,会同步到客户端,跟actor别无二致。

函数同步:

可允许服务器与客户端相互发送消息,可同步的函数成为远程调用函数(RPC)。远程调用函数可设置为 Reliable 或 Unreliable,其中 Reliable 调用必定会发生,而 Unreliable 调用可能会在网络繁忙时被丢弃。

远程调用函数主要包括 3 种类型:Multicast 广播、Run on Server 在服务端执行 和 Run on owning Client 在客户端执行。广播函数在服务器上调用和执行,然后自动转发给所有客户端。 在服务端执行的函数由客户端调用,然后仅在服务器上执行。 在客户端执行的函数由服务器调用,然后仅在自有客户端上执行。

服务器和客户端同步函数存在一些限制,其中一条是它们仅可在具有 Net Owner 的 Actor 上使用。如果 Actor 为玩家控制器或归玩家控制器所有,则其具有 Net Owner。

属性同步:

只能从服务器同步到客户端。当服务器上变量改变时,就会同步到客户端。可以为变量添加一个函数,每次同步时,自动调用该函数,该函数必须是UFUNCTION。

注意:只有对象设置为可同步,属于它的被标记为可同步的属性跟函数才能同步。

 

碰撞响应:trace响应和物体响应

每一个物体都有一个ObjectType;每一个trace都有一个TraceType;他们统称为Channel;

一个物体对碰撞的响应类型只有三种:Ignore,Overlap,Block;

每一个物体都要设置对每个Channel的响应类型;比如,worldstatic类型的物体,对visible类型trace的响应,为Ignore。

碰撞规则:

如果两个物体相互设置为block,那么两个物体相互block,如果一个物体的Simulation Generates Hit Events设置为true,它就会执行碰撞事件。

如果两个物体相互设置为overlap,那么两个物体可以相互穿插,如果一个物体的Generate Overlap Events设置为true,他就会执行穿插事件。

如果一个物体设置为overlap,另一个设置为block,那么两个相互穿插,Generate Overlap Events设置为true的物体,则会执行穿插事件。

如果一个物体设置为ignore,另一个不管设置为何,都不会产生效果,更不会执行事件。

 

动画:

local space,bone space,parentbone space,rootsocket space,component space,world space

local space跟bone space是一回事。骨骼的变换相对于自身。

parentbone space,骨骼的变换相对于父骨骼。

rootsocket space,骨骼的变换相对于根骨骼。

component space,骨骼的变换相对于skeletalmeshcomponent(就是模型)。

world space,骨骼的变换相对于世界坐标系。

注意:因为rootsocket space一般与component space重合,所以这两个可以相互通用。

animMontage:

It is an important point to keep in mind that although much of your Montage control will take place in the Animation Blueprint's Event Graph, Slots are actually handled within the Anim Graph. This is done by way of the Slot node, which simply takes in the name for a Slot. By positioning this node at a strategic point along your AnimGraph's execution, you can have multiple Montages that utilize the same Slot name.

一个montage必须属于一个组,一个组内,同一时间只能播放一个montage,如果播放第二个,第一个就会停止。可以同时播放多个组。

当播放montage时,会覆盖掉原始pose,当停止播放时,恢复原始pose。

转载于:https://my.oschina.net/xunxun/blog/648223

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值