diff --git a/01-Diary/周小结/2024.7.md b/01-Diary/周小结/2024.7.md index 60860ed..15081fc 100644 --- a/01-Diary/周小结/2024.7.md +++ b/01-Diary/周小结/2024.7.md @@ -42,8 +42,3 @@ 7. 定位吉他IK错误的具体代码以及原因,最后交给曹老师修复。 8. 查看ControlRig动画重定向相关逻辑,最后确定是因为F08的Hips骨骼有角度造成的问题。 -# 8.5~8.9 -1. 解决PVW&PGM 焦段无法提高到130以上的问题。 -2. 乃琳生日会场景优化。 - 1. 带有多个StaticMesh的场景蓝图旋转卡顿问题。 - 2. 罗导Sequence播放卡顿。 \ No newline at end of file diff --git a/01-Diary/周小结/2024.8.md b/01-Diary/周小结/2024.8.md new file mode 100644 index 0000000..826b500 --- /dev/null +++ b/01-Diary/周小结/2024.8.md @@ -0,0 +1,9 @@ +# 8.5~8.9 +1. 解决PVW&PGM 焦段无法提高到130以上的问题。 +2. 乃琳生日会场景优化。 + 1. 带有多个StaticMesh的场景蓝图旋转卡顿问题。 + 2. 罗导Sequence播放卡顿。 +3. 传送道具初版完成。 + +# 8.12~8.16 +1. \ No newline at end of file diff --git a/02-Note/DAWA/ASoul/实现效果/传送效果.md b/02-Note/DAWA/ASoul/实现效果/传送效果.md index 65e992e..5d1acbd 100644 --- a/02-Note/DAWA/ASoul/实现效果/传送效果.md +++ b/02-Note/DAWA/ASoul/实现效果/传送效果.md @@ -7,4 +7,45 @@ 1. 或者使用一个其他模型做过度。 3. 物理问题可以使用 Ignore Component Transform 来解决。 -manager.LayerManager.EnterLevelArea(this.preset.LevelAreaPreset.UUID, manager.LevelSwitchType); \ No newline at end of file +manager.LayerManager.EnterLevelArea(this.preset.LevelAreaPreset.UUID, manager.LevelSwitchType); + +# 角色会隐藏问题解决 +1. TsIdolControllerActor.ts中绑定了若干事件 +```typescript +RegisterEventListener(): void +{ + this.ListenerWrapper_SwitchLiveArea = (liveAreaUUID: UE.Guid) => { this.SwitchToLiveArea(liveAreaUUID) } + this.ListenerWrapper_OnFinishCreateTmpArea = (liveAreaUUID: UE.Guid) => { this.RequireSwitchToLiveArea(liveAreaUUID) } + this.ListenerWrapper_SceneChanged = (levelName:string)=>{this.OnSceneChanged() }; + this.ListenerWrapper_BeforeSceneChanged = (levelName:string)=>{this.BeforeSceneChanged() }; + DirectorEventSystem.RegisterEventListener(this, DirectorEvent.OnFinishSwitchLiveAreaLocal, this.ListenerWrapper_SwitchLiveArea) + DirectorEventSystem.RegisterEventListener(this, DirectorEvent.OnFinishSwitchSubLevelLocal,this.ListenerWrapper_SceneChanged) + DirectorEventSystem.RegisterEventListener(this, DirectorEvent.BeforeSwitchLevel,this.ListenerWrapper_BeforeSceneChanged) + DirectorEventSystem.RegisterEventListener(this, DirectorEvent.OnFinishCreateTmpLiveAreaLocal,this.ListenerWrapper_OnFinishCreateTmpArea) +} +``` + +- ListenerWrapper_SwitchLiveArea:角色移动到其他LiveArea的核心逻辑。 +- ListenerWrapper_OnFinishCreateTmpArea:无逻辑。 +- ListenerWrapper_SceneChanged:卸载所有道具?this.PropComp.OnSceneChanged() +- ListenerWrapper_BeforeSceneChanged:将角色与衣服从LiveAreaDetach? this.DressModel.K2_DetachFromActor() + +## ListenerWrapper_SwitchLiveArea +```c++ + SwitchToLiveArea(TargetLiveAreaGUID: UE.Guid): void { + console.warn(this.Identity.RootTag.TagName.toString() + ' switch to live area ' + TargetLiveAreaGUID.ToString()) + this.LiveAreaGIUD = TargetLiveAreaGUID + this.SetTransformToLiveArea() + if (this.PropComp.DressModel && this.PropComp.DressModel.MovementComp&&this.PropComp.DressModel.MovementComp.ManulMovement) { + console.warn(this.PropComp.DressModel.GetName() + ' is in free move mode, will not teleport to new area!') + return + } + var liveAreaMgr = LiveAreaUtils.GetLievAreaManagerInstance(this) + if (liveAreaMgr && liveAreaMgr.IsTmpLiveArea(TargetLiveAreaGUID)) { + // teleport to the target live area without fx + this.PropComp.Teleport(TargetLiveAreaGUID) + } else { + this.PropComp.DressModelTeleport(TargetLiveAreaGUID) + } + } +``` \ No newline at end of file