重装机兵重构3-剧情篇
上一篇重装机兵重构2-地图篇的后续
Day16
- 认识一些像素人物的生成工具;
- 增加持久化的能力,基于json 的文件的 SaveSystem的实现
Day17
- 认识 Unity 的 Timeline
- 认识 Timeline 的 Playable Track, Signal Track
Day18
利用 ProcessFrame 实现 Timeline 中两个 playableAsset 的暂停,等待用户输入才继续播放
认识 Timeline 的 Animation Track,实现人物移动 + 动画播放
修复 PlayableDirector.Pause 会导致人物会回到初始地点的bug:
1
2//director.Pause();
director.playableGraph.GetRootPlayable(0).Pause();
Day19
- 处理TextMeshPro的中文乱码:
从windows-> TextMeshPro -> Font Asset Creator 创建没有效果
从*.ttf -> creat ->TextMeshPro ->Font Asset -> SPF 这样可以 - 简单过场黑屏动画 天亮了 使用 UI -> Panel + UI -> TextMeshPro 实现
- 封装打字机,过场动画 天亮了 也可以使用
Day20
- 解决Visual Studio 的中文在Unity 乱码的问题:
在VS里面安装 扩展 -> 管理扩展, 搜索Force UTF-8(No BOM) 2022 - 增加逻辑, 开始游戏 -> 三选一角色 + 用户名称 -> 存档
- 增加逻辑, 记载游戏 -> 选择存档 -> 进入游戏
Day21
实现gameObject 在 UI Document 的展示(通过将GameObject 渲染到 RenderTexture)
实现Player的prefab, 根据职业选择渲染不同的人物
Day22
根据玩家选择的职业, 动态更新Timeline中animation track的人物的gameobject, 以及更新animation track 中的 animation clip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38private void UpdateAnimationTrack(PlayableDirector director)
{
var playerObject = GameObject.FindWithTag("Player");
Animator playerAnimator = playerObject.GetComponentInChildren<Animator>();
Debug.Log("playerAnimator is " + playerAnimator);
foreach (var track in director.playableAsset.outputs)
{
if (track.streamName == "PlayerPosition" || track.streamName == "PlayerAnimation")
{
if (track.streamName == "PlayerAnimation")
{
UpdateAnimationClip(track, playerAnimator);
}
director.SetGenericBinding(track.sourceObject, playerAnimator);
}
}
}
private void UpdateAnimationClip(PlayableBinding track, Animator animator)
{
if (track.sourceObject is AnimationTrack animationTrack)
{
// 获取该 Track 上的所有绑定(这里是 Animation Clip)
foreach (var clip in animationTrack.GetClips())
{
// 替换现有的 Animation Clip
foreach (var newClip in animator.runtimeAnimatorController.animationClips)
{
if (clip.displayName == newClip.name)
{
clip.asset = newClip; // 将新的 Animation Clip 赋值给 Track
break;
}
}
}
}
}增加postTimeline 脚本, 实现剧情中人物的销毁和常规人物的位置重置
在camera上面增加audio source, *.m4a 需要转成 *.wav
1
ffmpeg -i input.m4a output.wav
Day23
- 打字机支持加速(左键跳过)
- 利用UI Docuemnt 实现tab
Day24
- 实现menu 的隐藏出现,menu里面包含退出,实现游戏的开始->退出->开始的闭环:
注意UIDocument 的隐藏不要使用SetActive(false), 这样会导致按钮的事件丢失
至此, 素材篇基本结束了,后面进入功能篇