但本文要介绍的PostSpawnInitialize(),只做了上述的部分事情。 设置Actor的基本要素 这里的基本要素包括:创建的时间,网络方面的信息,Owner和Instigator,还有SceneRootComponent。 先来看SetOwner() 这里防止了自己把自己设成Owner导致循环,还维护了一个Children数组,记录了所有拥有自己的Actor。在FinishSpawning()之后会标...
AActor::PostRegisterAllComponents 接着往下, 如果这个Actor类将要被销毁并且允许失败, 就直接返回了, Actor生成失败, 如果不允许失败, 就接着走了. 这个参数是FActorSpawnParameters::bNoFail, 注释如下 /*** Determines whether spawning will not fail if certain conditions are not met.* If true,* spawning...
判断描述Actor信息类的Class是否是空的if(!Class){UE_LOG(LogSpawn,Warning,TEXT("SpawnActor failed because no class was specified"));returnNULL;}SCOPE_TIME_GUARD_NAMED_MS(TEXT("SpawnActor Of Type"),Class->GetFName(),2);#ifENABLE_SPAWNACTORTIMERFScopedSpawnActorTimerSpawnTimer(Class->GetFName(...
UE4 4.25 C++ 生成Actor SpawnActor<XXX> C++ 生成Actor AInventory*ABackPackCPPCharacter::GetInventory() {if(!Inventory) {FActorSpawnParametersParams; Params.SpawnCollisionHandlingOverride=ESpawnActorCollisionHandlingMethod::AlwaysSpawn; Params.Owner=this; Inventory= GetWorld()->SpawnActor<AInventory>(AInv...
3,设置了RepNotify的属性复制一定是有效的,Actor完成复制后才会在Client调用此函数。 4,Client查找找到的对应Actor一定是有效的,包括且不限于GetAllActorsofClass,GetPlayerPawn。 5,Client Actor BeginPlay逻辑通知的自身是有效的,但此时Owner不一定有效。
SaveNote4:UE4易出不明bug的SpawnActor 被生成的位置如果有其他actor(生成的位置已经有其他的actor占用),导致碰撞检测失败,导致无法生成目标actor (也有出现过镜头鬼畜乱晃等问题。基本都是因为被spawnactor的位置有其他东西)
那么对于一个Actor,他有三种方法来得到这个连接(或者说让自己属于这个连接)。 1.设置自己的owner为拥有连接的PlayerController,或者自己owner的owner为拥有连接的PlayerController。也就说官方文档说的查找他最外层的owner是否是PlayerController而且这个PlayerController拥有连接。
bool bNoCollisionFail,决定生成的Actor是否执行碰撞测试。如果为true,则在生成Actor时不进行碰撞测试。 bool bRemoteOwned, AActor* Owner,拥有所生成的Actor的AActor。 APawn* Instigator,导致所生成的Actor施加伤害的挑衅者。 bool bNoFail,决定了如果某些条件不满足,生成Actor是否失败。
Level.Add(GetWorld()->SpawnActor<ABuildingModLevel>()); C++中Spawn一个基于蓝图的Actor https://answers.unrealengine.com/questions/60897/spawn-actorobject-from-code.htm Here is how I spawn a blueprint via C++. Note that the blueprint I spawn has a base class that was created in C++ also...
设置拥有者 SetOwner(InOwner); 设置谁导致的这个Actor的生成。这块比较绕。这样想就明白了了 我觉得UE4设置InOwner,InInstigator就是在射击游戏的原型上衍生出来的。 比如人拿枪,人开枪,枪发射子弹。假如子弹就是这个被Spawn的Actor 那么InOwner是谁?是抢,子弹属于枪的 那么InInstigator是谁?是人,人开枪才有了子...