WIP: MusicTransition SyncPoint

This commit is contained in:
2026-04-16 17:55:29 +08:00
parent 813f4254c9
commit ee68275e32
11 changed files with 29 additions and 23 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -108,18 +108,6 @@ public partial class AudioObject : IBinarySerializable
/// </summary>
public bool ContainerPlayMode { get; set; }
/// <summary>
/// 按段落配置每段响应范围,用|分隔不同段落
/// </summary>
public string BlendRanges { get; set; }
/// <summary>
/// 0 = 指数
/// 1 = 线形
/// 2 = 对数
/// </summary>
public BlendCrossFadeType BlendCrossFadeType { get; set; }
/// <summary>
/// 指定避免重复的次数
/// </summary>
@@ -190,8 +178,6 @@ public partial class AudioObject : IBinarySerializable
Haptic = reader.ReadUInt32();
ContainerType = (ContainerType)reader.ReadByte();
ContainerPlayMode = reader.ReadBoolean();
BlendRanges = reader.ReadString();
BlendCrossFadeType = (BlendCrossFadeType)reader.ReadByte();
LimitRepetition = reader.ReadByte();
RandomType = reader.ReadBoolean();
VolumeStepThreshold = reader.ReadUInt32();
@@ -231,8 +217,6 @@ public partial class AudioObject : IBinarySerializable
writer.Write(Haptic);
writer.Write((byte)ContainerType);
writer.Write(ContainerPlayMode);
writer.Write(BlendRanges);
writer.Write((byte)BlendCrossFadeType);
writer.Write(LimitRepetition);
writer.Write(RandomType);
writer.Write(VolumeStepThreshold);
@@ -25,7 +25,8 @@ public partial class MusicContainer : IBinarySerializable
/// <summary>
/// 0 = 随机播放
/// 1 = 顺序播放
/// 2 = 同时播放
/// 2 = 混合播放
/// 3 = 切换播放
/// </summary>
public ContainerType ContainerType { get; set; }
@@ -45,9 +45,20 @@ public partial class MusicTransition : IBinarySerializable
public AlignMode AlignMode { get; set; }
/// <summary>
///
/// 0 = Start
/// 1 = Same Time
/// </summary>
public uint Segment { get; set; }
public SyncPoint SyncPoint { get; set; }
/// <summary>
/// samples
/// </summary>
public uint StartOffset { get; set; }
/// <summary>
/// samples
/// </summary>
public uint EndOffset { get; set; }
public void DeSerialize(BinaryReader reader)
@@ -58,7 +69,9 @@ public partial class MusicTransition : IBinarySerializable
FadeInTime = reader.ReadSingle();
FadeInOffset = reader.ReadSingle();
AlignMode = (AlignMode)reader.ReadByte();
Segment = reader.ReadUInt32();
SyncPoint = (SyncPoint)reader.ReadByte();
StartOffset = reader.ReadUInt32();
EndOffset = reader.ReadUInt32();
}
public void Serialize(BinaryWriter writer)
@@ -69,7 +82,9 @@ public partial class MusicTransition : IBinarySerializable
writer.Write(FadeInTime);
writer.Write(FadeInOffset);
writer.Write((byte)AlignMode);
writer.Write(Segment);
writer.Write((byte)SyncPoint);
writer.Write(StartOffset);
writer.Write(EndOffset);
}
}
@@ -244,7 +244,7 @@ namespace OCES.Audio
{
// ── 启动默认音乐与环境音 ──
// 触发一次初始状态,让音乐系统从默认状态开始匹配
SetState(GameState.Home);
//SetState(GameState.Home);
}
AudioObject ResolveSwitchContainer(AudioObject switchContainer)
@@ -53,6 +53,12 @@ namespace OCES.Audio
Finished,
}
public enum SyncPoint
{
Start,
SameAsCurrentSegment,
}
public interface IBinarySerializable
{
void DeSerialize(BinaryReader reader);
+1 -1
View File
@@ -7,7 +7,7 @@ namespace OCES
{
public class SetStateBind : MonoBehaviour
{
public GameState targetGameState;
public TileMaterial targetGameState;
public bool enableLowpass;
public Text buttonText;