Author SHA1 Message Date
ThomasCharester 05449642d5 Merge branch 'SoundManager' into Dev 2025-11-14 23:10:31 +03:00
ThomasCharester 7bc15cc03d Перекинул энтерстейт 2025-11-03 16:45:41 +03:00
16 changed files with 1004 additions and 208 deletions

No files matched your search

@@ -44,11 +44,8 @@ namespace Code.App.AppStates
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth); Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth);
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney); Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney);
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX); Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX);
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug6, PlayDebugDispatcher);
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
WaitForSceneToLoad(); WaitForSceneToLoad();
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
} }
private async UniTaskVoid WaitForSceneToLoad() private async UniTaskVoid WaitForSceneToLoad()
@@ -60,8 +57,8 @@ namespace Code.App.AppStates
Context.AudioFactory.WarmSFX() Context.AudioFactory.WarmSFX()
); );
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Peaceful); Context.AudioService.PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins();
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Action); Context.AudioService.PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins();
var sceneEnvironment = ((GameplaySceneEnvironment)SceneManager.GetActiveScene() var sceneEnvironment = ((GameplaySceneEnvironment)SceneManager.GetActiveScene()
.GetSceneContainer().Resolve<CurrentSceneEnvironment>()); .GetSceneContainer().Resolve<CurrentSceneEnvironment>());
@@ -80,10 +77,6 @@ namespace Code.App.AppStates
{ {
Context.AudioService.PlaySFX(SFXSounds.Crowbar, _testSFXTransform.position); Context.AudioService.PlaySFX(SFXSounds.Crowbar, _testSFXTransform.position);
} }
private void PlayDebugDispatcher(InputAction.CallbackContext context)
{
Context.AudioService.PlayDispatcher(DispatcherSounds.AhFreeman);
}
private void GiveHealth(InputAction.CallbackContext context) private void GiveHealth(InputAction.CallbackContext context)
{ {
_playerHealth.GetDamage(-1); _playerHealth.GetDamage(-1);
@@ -122,15 +115,13 @@ namespace Code.App.AppStates
_playerMoney = null; _playerMoney = null;
Context.InputService.DisableMap(ActionMappings.Gameplay); Context.InputService.DisableMap(ActionMappings.Gameplay);
Context.AudioService.GladlyAskToStopMusic(MusicType.Action, callback: Context.AudioFactory.ReleaseActionMusic); Context.AudioService.GladlyAskToStopGameplayMusic(Context.AudioFactory.ReleaseGameplayMusic);
Context.AudioService.GladlyAskToStopMusic(MusicType.Peaceful, callback: Context.AudioFactory.ReleasePeacefulMusic);
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveHealth); Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveHealth);
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, GiveHealth); Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, GiveHealth);
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth); Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth);
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney); Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney);
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX); Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX);
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug6, PlayDebugDispatcher);
base.ExitState(); base.ExitState();
} }
@@ -26,9 +26,7 @@ namespace Code.App.AppStates
Context.CameraStateMachine.SwitchState(CameraMode.Static); Context.CameraStateMachine.SwitchState(CameraMode.Static);
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
WaitForSceneToLoad(); WaitForSceneToLoad();
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
} }
private async UniTaskVoid WaitForSceneToLoad() private async UniTaskVoid WaitForSceneToLoad()
@@ -39,8 +37,8 @@ namespace Code.App.AppStates
Context.AudioFactory.WarmMenuMusic() Context.AudioFactory.WarmMenuMusic()
); );
Context.AudioService.TransitToSnapshot(AudioSnapshotState.Menu); Context.AudioService.TransitToSnapshot(AudioSnapshotState.Peaceful);
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Menu); Context.AudioService.PlayRandomMenuMusicUntilHumanityWillBeDestroyedForTheySins();
((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame); ((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame);
((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame); ((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame);
@@ -76,7 +74,7 @@ namespace Code.App.AppStates
public override void ExitState() public override void ExitState()
{ {
Context.InputService.DisableMap(ActionMappings.MainMenu); Context.InputService.DisableMap(ActionMappings.MainMenu);
Context.AudioService.GladlyAskToStopMusic(MusicType.Menu, callback: Context.AudioFactory.ReleaseMenuMusic); Context.AudioService.GladlyAskToStopMenuMusic(Context.AudioFactory.ReleaseMenuMusic);
base.ExitState(); base.ExitState();
} }
@@ -1,3 +1,4 @@
using System.Threading.Tasks;
using Code.App.StateMachine; using Code.App.StateMachine;
using Code.Audio; using Code.Audio;
using Code.Configs; using Code.Configs;
@@ -13,6 +14,7 @@ using Cysharp.Threading.Tasks;
using Reflex.Core; using Reflex.Core;
using Reflex.Injectors; using Reflex.Injectors;
using UnityEngine; using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
namespace Code.App namespace Code.App
@@ -79,6 +81,7 @@ namespace Code.App
containerBuilder.AddSingleton(staticDataService.EnemiesSoundListConfig, typeof(EnemiesSoundListConfig)); containerBuilder.AddSingleton(staticDataService.EnemiesSoundListConfig, typeof(EnemiesSoundListConfig));
} }
private bool _onAudioLoaded;
private AppStateMachine _appStateMachine; private AppStateMachine _appStateMachine;
private void Bootstrap(Container container) private void Bootstrap(Container container)
@@ -91,13 +94,12 @@ namespace Code.App
AttributeInjector.Inject(cameraStateMachine.StateMachineContext, container); AttributeInjector.Inject(cameraStateMachine.StateMachineContext, container);
cameraStateMachine.Initialize(); cameraStateMachine.Initialize();
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
BootstrapFinish(container); BootstrapFinish(container);
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
} }
private async UniTaskVoid BootstrapFinish(Container container) private async UniTaskVoid BootstrapFinish(Container container)
{ {
// container.Resolve<IAudioFactory>();
var loadingScreen = GameObject.FindWithTag(Tags.LoadingScreen); var loadingScreen = GameObject.FindWithTag(Tags.LoadingScreen);
DontDestroyOnLoad(loadingScreen); DontDestroyOnLoad(loadingScreen);
@@ -30,7 +30,9 @@ namespace Code.Audio
private AsyncOperationHandle<IList<AudioClip>> _enemiesHandle; private AsyncOperationHandle<IList<AudioClip>> _enemiesHandle;
private AsyncOperationHandle<IList<AudioClip>> _dispatcherHandle; private AsyncOperationHandle<IList<AudioClip>> _dispatcherHandle;
public Dictionary<MusicType, List<AudioClip>> MusicDictionary { get; private set; } = new(); public List<AudioClip> PeacefulMusic { get; private set; } = new();
public List<AudioClip> ActionMusic { get; private set; } = new();
public List<AudioClip> MenuMusic { get; private set; } = new();
public List<AudioClip> SFXAudios { get; private set; } = new(); public List<AudioClip> SFXAudios { get; private set; } = new();
public List<AudioClip> EnemiesAudios { get; private set; } = new(); public List<AudioClip> EnemiesAudios { get; private set; } = new();
public List<AudioClip> DispatcherAudios { get; private set; } = new(); public List<AudioClip> DispatcherAudios { get; private set; } = new();
@@ -39,7 +41,7 @@ namespace Code.Audio
SoundtrackListConfig soundtrackListConfig, SoundtrackListConfig soundtrackListConfig,
SFXListConfig sfxListConfig, SFXListConfig sfxListConfig,
EnemiesSoundListConfig enemiesSoundListConfig, EnemiesSoundListConfig enemiesSoundListConfig,
DispatcherSoundListConfig dispatcherSoundListConfig DispatcherSoundListConfig dispatcherSoundListConfig//, CharacterSoundListConfig characterSoundListConfig
) )
{ {
AudioMixer = audioMixerConfig.audioMixerAsset; AudioMixer = audioMixerConfig.audioMixerAsset;
@@ -51,12 +53,16 @@ namespace Code.Audio
_SFX = sfxListConfig.SFX; _SFX = sfxListConfig.SFX;
_enemies = enemiesSoundListConfig.enemies; _enemies = enemiesSoundListConfig.enemies;
_dispatcher = dispatcherSoundListConfig.dispatcher; _dispatcher = dispatcherSoundListConfig.dispatcher;
// _character = characterSoundListConfig.character;
MusicDictionary.Add(MusicType.Menu, new ());
MusicDictionary.Add(MusicType.Peaceful, new ());
MusicDictionary.Add(MusicType.Action, new ());
} }
// public async UniTask<AudioMixer> CreateMixer()
// {
// AudioMixer audioMixer = (await Addressables.InstantiateAsync(_audioMixerPrefab).ToUniTask()).GetComponent<AudioMixer>();
//
// return audioMixer;
// }
public async UniTask LoadAudioSourcePrefab(Action<GameObject> callback) => public async UniTask LoadAudioSourcePrefab(Action<GameObject> callback) =>
callback?.Invoke(await Addressables.LoadAssetAsync<GameObject>(_audioSourcePrefab)); callback?.Invoke(await Addressables.LoadAssetAsync<GameObject>(_audioSourcePrefab));
@@ -66,17 +72,18 @@ namespace Code.Audio
_peacefulMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_peacefulSoundtrack, OnPeacefulTrackLoaded, Addressables.MergeMode.None); _peacefulMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_peacefulSoundtrack, OnPeacefulTrackLoaded, Addressables.MergeMode.None);
await UniTask.WhenAll(_actionMusicHandle.ToUniTask(), _peacefulMusicHandle.ToUniTask()); await UniTask.WhenAll(_actionMusicHandle.ToUniTask(), _peacefulMusicHandle.ToUniTask());
} }
public void ReleaseActionMusic()
public void ReleaseGameplayMusic()
{ {
MusicDictionary[MusicType.Action].Clear(); ActionMusic.Clear();
_actionMusicHandle.Release(); _actionMusicHandle.Release();
}
public void ReleasePeacefulMusic() PeacefulMusic.Clear();
{
MusicDictionary[MusicType.Peaceful].Clear();
_peacefulMusicHandle.Release(); _peacefulMusicHandle.Release();
} }
public async UniTask WarmMenuMusic( ) public async UniTask WarmMenuMusic( )
{ {
_menuMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_menuSoundtrack, OnMenuTrackLoaded, Addressables.MergeMode.None); _menuMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_menuSoundtrack, OnMenuTrackLoaded, Addressables.MergeMode.None);
@@ -84,9 +91,10 @@ namespace Code.Audio
await _menuMusicHandle.ToUniTask(); await _menuMusicHandle.ToUniTask();
} }
public void ReleaseMenuMusic() public void ReleaseMenuMusic()
{ {
MusicDictionary[MusicType.Menu].Clear(); MenuMusic.Clear();
// foreach (var assetReference in _menuSoundtrack) assetReference.ReleaseAsset(); // foreach (var assetReference in _menuSoundtrack) assetReference.ReleaseAsset();
_menuMusicHandle.Release(); _menuMusicHandle.Release();
} }
@@ -97,6 +105,7 @@ namespace Code.Audio
await _SFXHandle.ToUniTask(); await _SFXHandle.ToUniTask();
} }
public void ReleaseSFX() public void ReleaseSFX()
{ {
SFXAudios.Clear(); SFXAudios.Clear();
@@ -130,17 +139,17 @@ namespace Code.Audio
_dispatcherHandle.Release(); _dispatcherHandle.Release();
} }
private void OnMenuTrackLoaded(AudioClip audioClip)
{
MusicDictionary[MusicType.Menu].Add(audioClip);
}
private void OnActionTrackLoaded(AudioClip audioClip) private void OnActionTrackLoaded(AudioClip audioClip)
{ {
MusicDictionary[MusicType.Action].Add(audioClip); ActionMusic.Add(audioClip);
} }
private void OnPeacefulTrackLoaded(AudioClip audioClip) private void OnPeacefulTrackLoaded(AudioClip audioClip)
{ {
MusicDictionary[MusicType.Peaceful].Add(audioClip); PeacefulMusic.Add(audioClip);
}
private void OnMenuTrackLoaded(AudioClip audioClip)
{
MenuMusic.Add(audioClip);
} }
private void OnSFXLoaded(AudioClip audioClip) private void OnSFXLoaded(AudioClip audioClip)
{ {
+130 -63
View File
@@ -22,9 +22,9 @@ namespace Code.Audio
private AudioSource _peacefulMusicSource; private AudioSource _peacefulMusicSource;
private AudioMixerGroup _masterGroup, private AudioMixerGroup _masterGroup,
// _musicGroup, _musicGroup,
// _actionMusicGroup, _actionMusicGroup,
// _peacefulMusicGroup, _peacefulMusicGroup,
_SFXGroup, _SFXGroup,
_creaturesGroup, _creaturesGroup,
_dispatcherGroup, _dispatcherGroup,
@@ -46,92 +46,110 @@ namespace Code.Audio
_mixer = _audioFactory.AudioMixer; _mixer = _audioFactory.AudioMixer;
_masterGroup = _mixer.FindMatchingGroups(AudioGroups.MasterGroup)[0]; _masterGroup = _mixer.FindMatchingGroups(AudioGroups.MasterGroup)[0];
// _actionMusicGroup = _mixer.FindMatchingGroups(AudioGroups.ActionMusicGroup)[0]; _actionMusicGroup = _mixer.FindMatchingGroups(AudioGroups.ActionMusicGroup)[0];
// _peacefulMusicGroup = _mixer.FindMatchingGroups(AudioGroups.PeacefulMusoup)[0]; _peacefulMusicGroup = _mixer.FindMatchingGroups(AudioGroups.PeacefulMusicGroup)[0];
// _musicGroup = _mixer.FindMatchingGroups(AudioGroups.MusicGroup)[0];
_musicAudioGroups.Add(MusicType.Menu, _mixer.FindMatchingGroups(AudioGroups.MenuMusicGroup)[0]);
_musicAudioGroups.Add(MusicType.Action, _mixer.FindMatchingGroups(AudioGroups.ActionMusicGroup)[0]);
_musicAudioGroups.Add(MusicType.Peaceful, _mixer.FindMatchingGroups(AudioGroups.PeacefulMusicGroup)[0]);
_cancellationTokenSources.Add(MusicType.Menu, new());
_cancellationTokenSources.Add(MusicType.Action, new());
_cancellationTokenSources.Add(MusicType.Peaceful, new());
_musicAudioSources.Add(MusicType.Menu, null);
_musicAudioSources.Add(MusicType.Action, null);
_musicAudioSources.Add(MusicType.Peaceful, null);
_SFXGroup = _mixer.FindMatchingGroups(AudioGroups.SFXGroup)[0]; _SFXGroup = _mixer.FindMatchingGroups(AudioGroups.SFXGroup)[0];
_musicGroup = _mixer.FindMatchingGroups(AudioGroups.MusicGroup)[0];
_creaturesGroup = _mixer.FindMatchingGroups(AudioGroups.CreaturesGroup)[0]; _creaturesGroup = _mixer.FindMatchingGroups(AudioGroups.CreaturesGroup)[0];
_dispatcherGroup = _mixer.FindMatchingGroups(AudioGroups.DispatcherMusicGroup)[0]; _dispatcherGroup = _mixer.FindMatchingGroups(AudioGroups.DispatcherMusicGroup)[0];
_courierGroup = _mixer.FindMatchingGroups(AudioGroups.CourierMusicGroup)[0]; _courierGroup = _mixer.FindMatchingGroups(AudioGroups.CourierMusicGroup)[0];
_enemiesGroup = _mixer.FindMatchingGroups(AudioGroups.EnemiesMusicGroup)[0]; _enemiesGroup = _mixer.FindMatchingGroups(AudioGroups.EnemiesMusicGroup)[0];
_snapshots[AudioSnapshotState.None] = _mixer.FindSnapshot(AudioGroups.NoneSnapshot);
_snapshots[AudioSnapshotState.Peaceful] = _mixer.FindSnapshot(AudioGroups.PeacefulSnapshot); _snapshots[AudioSnapshotState.Peaceful] = _mixer.FindSnapshot(AudioGroups.PeacefulSnapshot);
_snapshots[AudioSnapshotState.Action] = _mixer.FindSnapshot(AudioGroups.ActionSnapshot); _snapshots[AudioSnapshotState.Action] = _mixer.FindSnapshot(AudioGroups.ActionSnapshot);
_snapshots[AudioSnapshotState.Menu] = _mixer.FindSnapshot(AudioGroups.MenuSnapshot); _snapshots[AudioSnapshotState.None] = _mixer.FindSnapshot(AudioGroups.NoneSnapshot);
await _audioFactory.LoadAudioSourcePrefab(_audioSourcePool.Initialize); await _audioFactory.LoadAudioSourcePrefab(_audioSourcePool.Initialize);
InitializeMusicSources();
} }
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed private void InitializeMusicSources()
private Dictionary<MusicType, CancellationTokenSource> _cancellationTokenSources = new(); {
private Dictionary<MusicType, AudioSource> _musicAudioSources = new(); _actionMusicSource = _audioSourcePool.GetSource();
private Dictionary<MusicType, AudioMixerGroup> _musicAudioGroups = new(); _actionMusicSource.outputAudioMixerGroup = _actionMusicGroup;
_actionMusicSource.spatialBlend = 0f;
public async UniTaskVoid PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType musicType) _peacefulMusicSource = _audioSourcePool.GetSource();
{ _peacefulMusicSource.outputAudioMixerGroup = _peacefulMusicGroup;
if(!_musicAudioSources[musicType]) _peacefulMusicSource.spatialBlend = 0f;
{
_musicAudioSources[musicType] = _audioSourcePool.GetSource();
_musicAudioSources[musicType].spatialBlend = 0f;
_musicAudioSources[musicType].outputAudioMixerGroup = _musicAudioGroups[musicType];
} }
_musicAudioSources[musicType].resource = public void PlayRandomGameplayMusic()
_audioFactory.MusicDictionary[musicType][
Random.Range(0, _audioFactory.MusicDictionary[musicType].Count)];
_musicAudioSources[musicType].Play();
// await UniTask.WaitUntilValueChanged(_musicAudioSources[musicType],
// _ => !_musicAudioSources[musicType].isPlaying,
// cancellationToken: _cancellationTokenSources[musicType].Token);
await UniTask.NextFrame();
// Debug.Log($"Playing {musicType}");
var (isCanceled, _) = await UniTask.WaitUntilValueChanged(_musicAudioSources[musicType],
_ => !_musicAudioSources[musicType].isPlaying,
cancellationToken: _cancellationTokenSources[musicType].Token).SuppressCancellationThrow();
// Debug.Log($"Finished {musicType}");
if (isCanceled)
{ {
// Debug.Log($"Cancelled {musicType}"); _peacefulMusicSource.resource = _audioFactory.PeacefulMusic[Random.Range(0, _audioFactory.PeacefulMusic.Count)];
_cancellationTokenSources[musicType].Dispose(); _actionMusicSource.resource =
_cancellationTokenSources[musicType] = new(); _audioFactory.ActionMusic[Random.Range(0, _audioFactory.ActionMusic.Count)];
_audioSourcePool.ReleaseSource(_musicAudioSources[musicType]); _peacefulMusicSource.Play();
_musicAudioSources[musicType] = null; _actionMusicSource.Play();
}
public void PlayRandomMenuMusic()
{
TransitToSnapshot(AudioSnapshotState.Peaceful);
_peacefulMusicSource.resource = _audioFactory.MenuMusic[Random.Range(0, _audioFactory.MenuMusic.Count)];
_peacefulMusicSource.Play();
}
private CancellationTokenSource _menuMusicTokenSource = new();
public async UniTaskVoid PlayRandomMenuMusicUntilHumanityWillBeDestroyedForTheySins()
{
TransitToSnapshot(AudioSnapshotState.Peaceful);
_peacefulMusicSource.resource = _audioFactory.MenuMusic[Random.Range(0, _audioFactory.MenuMusic.Count)];
_peacefulMusicSource.Play();
await UniTask.WaitUntilValueChanged(_peacefulMusicSource, _ => _peacefulMusicSource.isPlaying, cancellationToken: _menuMusicTokenSource.Token);
if (_menuMusicTokenSource.IsCancellationRequested)
{
_menuMusicTokenSource.Dispose();
_menuMusicTokenSource = new();
return; return;
} }
PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(musicType); PlayRandomMenuMusicUntilHumanityWillBeDestroyedForTheySins();
} }
private CancellationTokenSource _peacefulMusicTokenSource = new();
public async UniTaskVoid GladlyAskToStopMusic(MusicType musicType, AudioSnapshotState audioSnapshotState = AudioSnapshotState.None, float time = 1f, Action callback = null) public async UniTaskVoid PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins()
{ {
TransitToSnapshot(audioSnapshotState, time); TransitToSnapshot(AudioSnapshotState.Peaceful);
await UniTask.WaitForSeconds(time); _peacefulMusicSource.resource = _audioFactory.PeacefulMusic[Random.Range(0, _audioFactory.PeacefulMusic.Count)];
_cancellationTokenSources[musicType].Cancel(); _peacefulMusicSource.Play();
callback?.Invoke(); await UniTask.WaitUntilValueChanged(_peacefulMusicSource, _ => _peacefulMusicSource.isPlaying, cancellationToken: _peacefulMusicTokenSource.Token);
if (_peacefulMusicTokenSource.IsCancellationRequested)
{
_peacefulMusicTokenSource.Dispose();
_peacefulMusicTokenSource = new();
return;
}
PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins();
}
private CancellationTokenSource _actionMusicTokenSource = new();
public async UniTaskVoid PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins()
{
TransitToSnapshot(AudioSnapshotState.Action);
_actionMusicSource.resource = _audioFactory.ActionMusic[Random.Range(0, _audioFactory.ActionMusic.Count)];
_actionMusicSource.Play();
await UniTask.WaitUntilValueChanged(_actionMusicSource, _ => _actionMusicSource.isPlaying, cancellationToken: _actionMusicTokenSource.Token);
if (_actionMusicTokenSource.IsCancellationRequested)
{
_actionMusicTokenSource.Dispose();
_actionMusicTokenSource = new();
return;
}
PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins();
} }
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
public void StopMusic() public void StopMusic()
{ {
@@ -147,6 +165,57 @@ namespace Code.Audio
callback?.Invoke(); callback?.Invoke();
} }
public async UniTaskVoid GladlyAskToStopMenuMusic(Action callback = null)
{
TransitToSnapshot(AudioSnapshotState.None);
await UniTask.WaitForSeconds(1f);
_peacefulMusicSource.Stop();
_menuMusicTokenSource.Cancel();
callback?.Invoke();
}
public async UniTaskVoid GladlyAskToStopGameplayMusic(Action callback = null)
{
TransitToSnapshot(AudioSnapshotState.None);
await UniTask.WaitForSeconds(1f);
_actionMusicSource.Stop();
_peacefulMusicSource.Stop();
_actionMusicTokenSource.Cancel();
_peacefulMusicTokenSource.Cancel();
callback?.Invoke();
}
public async UniTaskVoid GladlyAskToStopActionMusic(Action callback = null)
{
TransitToSnapshot(AudioSnapshotState.None);
await UniTask.WaitForSeconds(1f);
_actionMusicSource.Stop();
_actionMusicTokenSource.Cancel();
callback?.Invoke();
}
public async UniTaskVoid GladlyAskToStopPeacefulMusic(Action callback = null)
{
TransitToSnapshot(AudioSnapshotState.None);
await UniTask.WaitForSeconds(1f);
_peacefulMusicSource.Stop();
_peacefulMusicTokenSource.Cancel();
callback?.Invoke();
}
public void TransitToSnapshot(AudioSnapshotState state, float time = 1f) public void TransitToSnapshot(AudioSnapshotState state, float time = 1f)
{ {
@@ -158,12 +227,10 @@ namespace Code.Audio
{ {
_audioSourcePool.PlayOneShot(_audioFactory.SFXAudios[(int)sfxId], position, _SFXGroup); _audioSourcePool.PlayOneShot(_audioFactory.SFXAudios[(int)sfxId], position, _SFXGroup);
} }
public void PlayEnemy(EnemiesSounds enemySoundId, Vector3 position) public void PlayEnemy(EnemiesSounds enemySoundId, Vector3 position)
{ {
_audioSourcePool.PlayOneShot(_audioFactory.EnemiesAudios[(int)enemySoundId], position, _enemiesGroup); _audioSourcePool.PlayOneShot(_audioFactory.EnemiesAudios[(int)enemySoundId], position, _enemiesGroup);
} }
public void PlayDispatcher(DispatcherSounds dispatcherSoundId) public void PlayDispatcher(DispatcherSounds dispatcherSoundId)
{ {
_audioSourcePool.PlayShizo(_audioFactory.DispatcherAudios[(int)dispatcherSoundId], _dispatcherGroup); _audioSourcePool.PlayShizo(_audioFactory.DispatcherAudios[(int)dispatcherSoundId], _dispatcherGroup);
@@ -4,7 +4,6 @@ namespace Code.Audio
{ {
None, None,
Peaceful, Peaceful,
Action, Action
Menu
} }
} }
@@ -19,7 +19,7 @@ namespace Code.Audio
_pool = new ObjectPool<AudioSource>( _pool = new ObjectPool<AudioSource>(
createFunc: CreateItem, createFunc: CreateItem,
// actionOnGet: OnGet, // actionOnGet: OnGet,
actionOnRelease: OnRelease, // actionOnRelease: OnRelease,
actionOnDestroy: OnDestroyItem, actionOnDestroy: OnDestroyItem,
collectionCheck: true, // helps catch double-release mistakes collectionCheck: true, // helps catch double-release mistakes
defaultCapacity: 10, defaultCapacity: 10,
@@ -45,7 +45,6 @@ namespace Code.Audio
// Called when an item is returned to the pool. // Called when an item is returned to the pool.
private void OnRelease(AudioSource source) private void OnRelease(AudioSource source)
{ {
source.Stop();
//source.gameObject.SetActive(false); //source.gameObject.SetActive(false);
} }
@@ -8,14 +8,16 @@ namespace Code.Audio
{ {
public interface IAudioFactory public interface IAudioFactory
{ {
List<AudioClip> PeacefulMusic { get; }
List<AudioClip> ActionMusic { get; }
List<AudioClip> MenuMusic { get; }
List<AudioClip> SFXAudios { get; } List<AudioClip> SFXAudios { get; }
List<AudioClip> EnemiesAudios { get; } List<AudioClip> EnemiesAudios { get; }
List<AudioClip> DispatcherAudios { get; } List<AudioClip> DispatcherAudios { get; }
AudioMixer AudioMixer { get; } AudioMixer AudioMixer { get; }
Dictionary<MusicType, List<AudioClip>> MusicDictionary { get; }
UniTask LoadAudioSourcePrefab(Action<GameObject> callback); UniTask LoadAudioSourcePrefab(Action<GameObject> callback);
UniTask WarmGameplayMusic(); UniTask WarmGameplayMusic();
void ReleaseActionMusic(); void ReleaseGameplayMusic();
UniTask WarmMenuMusic(); UniTask WarmMenuMusic();
void ReleaseMenuMusic(); void ReleaseMenuMusic();
UniTask WarmSFX(); UniTask WarmSFX();
@@ -24,6 +26,5 @@ namespace Code.Audio
void ReleaseEnemies(); void ReleaseEnemies();
UniTask WarmDispatcher(); UniTask WarmDispatcher();
void ReleaseDispatcher(); void ReleaseDispatcher();
void ReleasePeacefulMusic();
} }
} }
@@ -7,13 +7,20 @@ namespace Code.Audio
public interface IAudioService public interface IAudioService
{ {
UniTask Initialize(); UniTask Initialize();
UniTaskVoid PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType musicType); void PlayRandomGameplayMusic();
UniTaskVoid GladlyAskToStopMusic(MusicType musicType, AudioSnapshotState audioSnapshotState = AudioSnapshotState.None, float time = 1f, Action callback = null);
void StopMusic();
void GladlyAskToStopMusic(Action callback = null);
void TransitToSnapshot(AudioSnapshotState state, float time = 1f); void TransitToSnapshot(AudioSnapshotState state, float time = 1f);
void PlaySFX(SFXSounds sfxId, Vector3 position); void PlaySFX(SFXSounds sfxId, Vector3 position);
void PlayEnemy(EnemiesSounds enemySoundId, Vector3 position); void PlayEnemy(EnemiesSounds enemySoundId, Vector3 position);
void PlayDispatcher(DispatcherSounds dispatcherSoundId); void PlayDispatcher(DispatcherSounds dispatcherSoundId);
void PlayRandomMenuMusic();
UniTaskVoid PlayRandomMenuMusicUntilHumanityWillBeDestroyedForTheySins();
void StopMusic();
void GladlyAskToStopMusic(Action callback = null);
UniTaskVoid GladlyAskToStopMenuMusic(Action callback = null);
UniTaskVoid GladlyAskToStopActionMusic(Action callback = null);
UniTaskVoid GladlyAskToStopPeacefulMusic(Action callback = null);
UniTaskVoid PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins();
UniTaskVoid PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins();
UniTaskVoid GladlyAskToStopGameplayMusic(Action callback = null);
} }
} }
@@ -1,9 +0,0 @@
namespace Code.Audio
{
public enum MusicType
{
Menu,
Peaceful,
Action
}
}
@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 74ff08d5f1b741f69e37fc06fb07ae8d
timeCreated: 1763151897
@@ -25,7 +25,5 @@ namespace Code.Constants
public const string PeacefulSnapshot = "Peaceful"; public const string PeacefulSnapshot = "Peaceful";
public const string ActionSnapshot = "Action"; public const string ActionSnapshot = "Action";
public const string NoneSnapshot = "None"; public const string NoneSnapshot = "None";
public const string MenuSnapshot = "Menu";
public const string MenuMusicGroup = "Menu";
} }
} }
@@ -52,39 +52,6 @@ AudioMixerEffectController:
m_SendTarget: {fileID: 0} m_SendTarget: {fileID: 0}
m_EnableWetMix: 0 m_EnableWetMix: 0
m_Bypass: 0 m_Bypass: 0
--- !u!245 &-5566153147845745614
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Menu
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: ae02c0612d44bfd459883c67f6dab857
m_FloatValues:
b9fc0df121fe7134e9cbd35aa5a65755: 0.10800299
ddab7e07de3c686e296ff10b1cd77a47: -80
dd0b3fe80d006124baa36e791e6953f0: -80
m_TransitionOverrides: {}
--- !u!243 &-5282050360126310577
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Menu
m_AudioMixer: {fileID: 24100000}
m_GroupID: af6d3dead2e9e4848a2ca2fa55634108
m_Children: []
m_Volume: b9fc0df121fe7134e9cbd35aa5a65755
m_Pitch: 3cdebfce079b3864f93ef55f8bc453ae
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 5712107256638894671}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!243 &-4235790927912365957 --- !u!243 &-4235790927912365957
AudioMixerGroupController: AudioMixerGroupController:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -97,7 +64,6 @@ AudioMixerGroupController:
m_Children: m_Children:
- {fileID: 1469200815455588746} - {fileID: 1469200815455588746}
- {fileID: 9214955797390454771} - {fileID: 9214955797390454771}
- {fileID: -5282050360126310577}
m_Volume: 4c469b14481ac855fb9fb2989e6e6b94 m_Volume: 4c469b14481ac855fb9fb2989e6e6b94
m_Pitch: f5433a3ce2d2313f2b2d52521d9fa5bd m_Pitch: f5433a3ce2d2313f2b2d52521d9fa5bd
m_Send: 00000000000000000000000000000000 m_Send: 00000000000000000000000000000000
@@ -153,7 +119,6 @@ AudioMixerSnapshotController:
m_AudioMixer: {fileID: 24100000} m_AudioMixer: {fileID: 24100000}
m_SnapshotID: 6d6b0cfa14637d5f0a34277934971c34 m_SnapshotID: 6d6b0cfa14637d5f0a34277934971c34
m_FloatValues: m_FloatValues:
b9fc0df121fe7134e9cbd35aa5a65755: -80
ddab7e07de3c686e296ff10b1cd77a47: -80 ddab7e07de3c686e296ff10b1cd77a47: -80
m_TransitionOverrides: {} m_TransitionOverrides: {}
--- !u!241 &24100000 --- !u!241 &24100000
@@ -169,7 +134,6 @@ AudioMixerController:
- {fileID: 8341788112416184532} - {fileID: 8341788112416184532}
- {fileID: -1214924791136564940} - {fileID: -1214924791136564940}
- {fileID: 24500006} - {fileID: 24500006}
- {fileID: -5566153147845745614}
m_StartSnapshot: {fileID: 8341788112416184532} m_StartSnapshot: {fileID: 8341788112416184532}
m_SuspendThreshold: -80 m_SuspendThreshold: -80
m_EnableSuspend: 1 m_EnableSuspend: 1
@@ -186,10 +150,9 @@ AudioMixerController:
- 9bd058bbb94358d33a130fd50e352c2d - 9bd058bbb94358d33a130fd50e352c2d
- e04cdd7cb505ba69ea76a16038de727a - e04cdd7cb505ba69ea76a16038de727a
- 9eb64ac0ca0e2f1098eafbba1f9633f5 - 9eb64ac0ca0e2f1098eafbba1f9633f5
- af6d3dead2e9e4848a2ca2fa55634108
name: View name: View
m_CurrentViewIndex: 0 m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: -5566153147845745614} m_TargetSnapshot: {fileID: -1214924791136564940}
--- !u!243 &24300002 --- !u!243 &24300002
AudioMixerGroupController: AudioMixerGroupController:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -236,7 +199,6 @@ AudioMixerSnapshotController:
m_AudioMixer: {fileID: 24100000} m_AudioMixer: {fileID: 24100000}
m_SnapshotID: bdbaa2a61b8857f568cd42dafa5c4811 m_SnapshotID: bdbaa2a61b8857f568cd42dafa5c4811
m_FloatValues: m_FloatValues:
b9fc0df121fe7134e9cbd35aa5a65755: -80
dd0b3fe80d006124baa36e791e6953f0: -80 dd0b3fe80d006124baa36e791e6953f0: -80
m_TransitionOverrides: {} m_TransitionOverrides: {}
--- !u!244 &671806689151419646 --- !u!244 &671806689151419646
@@ -310,20 +272,6 @@ AudioMixerGroupController:
m_Mute: 0 m_Mute: 0
m_Solo: 0 m_Solo: 0
m_BypassEffects: 0 m_BypassEffects: 0
--- !u!244 &5712107256638894671
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 8d1dc8039a4095e439a61f34c4e7f3a6
m_EffectName: Attenuation
m_MixLevel: fdc182acd523a7247a98663cce44aca2
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!244 &5996723691131988381 --- !u!244 &5996723691131988381
AudioMixerEffectController: AudioMixerEffectController:
m_ObjectHideFlags: 3 m_ObjectHideFlags: 3
@@ -60,8 +60,122 @@ MonoBehaviour:
m_SourceFontFilePath: m_SourceFontFilePath:
m_AtlasPopulationMode: 1 m_AtlasPopulationMode: 1
InternalDynamicOS: 0 InternalDynamicOS: 0
m_GlyphTable: [] m_GlyphTable:
m_CharacterTable: [] - m_Index: 30
m_Metrics:
m_Width: 51.296875
m_Height: 63
m_HorizontalBearingX: 2.703125
m_HorizontalBearingY: 63
m_HorizontalAdvance: 56.703125
m_GlyphRect:
m_X: 10
m_Y: 10
m_Width: 52
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 60
m_Metrics:
m_Width: 49.234375
m_Height: 63
m_HorizontalBearingX: 2.703125
m_HorizontalBearingY: 63
m_HorizontalAdvance: 54.625
m_GlyphRect:
m_X: 10
m_Y: 92
m_Width: 50
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 67
m_Metrics:
m_Width: 49.234375
m_Height: 63
m_HorizontalBearingX: 2.703125
m_HorizontalBearingY: 63
m_HorizontalAdvance: 54.625
m_GlyphRect:
m_X: 10
m_Y: 174
m_Width: 50
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 64
m_Metrics:
m_Width: 31.40625
m_Height: 63
m_HorizontalBearingX: 2.703125
m_HorizontalBearingY: 63
m_HorizontalAdvance: 36.8125
m_GlyphRect:
m_X: 10
m_Y: 256
m_Width: 33
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 77
m_Metrics:
m_Width: 53.09375
m_Height: 63
m_HorizontalBearingX: 2.703125
m_HorizontalBearingY: 63
m_HorizontalAdvance: 58.5
m_GlyphRect:
m_X: 10
m_Y: 338
m_Width: 54
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 73
m_Metrics:
m_Width: 52.203125
m_Height: 63
m_HorizontalBearingX: 2.703125
m_HorizontalBearingY: 63
m_HorizontalAdvance: 55.984375
m_GlyphRect:
m_X: 62
m_Y: 256
m_Width: 53
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
m_CharacterTable:
- m_ElementType: 1
m_Unicode: 68
m_GlyphIndex: 30
m_Scale: 1
- m_ElementType: 1
m_Unicode: 101
m_GlyphIndex: 60
m_Scale: 1
- m_ElementType: 1
m_Unicode: 108
m_GlyphIndex: 67
m_Scale: 1
- m_ElementType: 1
m_Unicode: 105
m_GlyphIndex: 64
m_Scale: 1
- m_ElementType: 1
m_Unicode: 118
m_GlyphIndex: 77
m_Scale: 1
- m_ElementType: 1
m_Unicode: 114
m_GlyphIndex: 73
m_Scale: 1
m_AtlasTextures: m_AtlasTextures:
- {fileID: 688428377202190775} - {fileID: 688428377202190775}
m_AtlasTextureIndex: 0 m_AtlasTextureIndex: 0
@@ -72,12 +186,52 @@ MonoBehaviour:
m_AtlasHeight: 1024 m_AtlasHeight: 1024
m_AtlasPadding: 9 m_AtlasPadding: 9
m_AtlasRenderMode: 4165 m_AtlasRenderMode: 4165
m_UsedGlyphRects: [] m_UsedGlyphRects:
m_FreeGlyphRects:
- m_X: 0 - m_X: 0
m_Y: 0 m_Y: 0
m_Width: 71
m_Height: 82
- m_X: 0
m_Y: 82
m_Width: 69
m_Height: 82
- m_X: 0
m_Y: 164
m_Width: 69
m_Height: 82
- m_X: 0
m_Y: 246
m_Width: 52
m_Height: 82
- m_X: 0
m_Y: 328
m_Width: 73
m_Height: 82
- m_X: 52
m_Y: 246
m_Width: 72
m_Height: 82
m_FreeGlyphRects:
- m_X: 0
m_Y: 410
m_Width: 1023 m_Width: 1023
m_Height: 613
- m_X: 71
m_Y: 0
m_Width: 952
m_Height: 246
- m_X: 73
m_Y: 328
m_Width: 950
m_Height: 695
- m_X: 124
m_Y: 0
m_Width: 899
m_Height: 1023 m_Height: 1023
- m_X: 69
m_Y: 82
m_Width: 954
m_Height: 164
m_FontFeatureTable: m_FontFeatureTable:
m_MultipleSubstitutionRecords: [] m_MultipleSubstitutionRecords: []
m_LigatureSubstitutionRecords: [] m_LigatureSubstitutionRecords: []
@@ -153,9 +307,9 @@ Texture2D:
Hash: 00000000000000000000000000000000 Hash: 00000000000000000000000000000000
m_IsAlphaChannelOptional: 0 m_IsAlphaChannelOptional: 0
serializedVersion: 4 serializedVersion: 4
m_Width: 1 m_Width: 1024
m_Height: 1 m_Height: 1024
m_CompleteImageSize: 1 m_CompleteImageSize: 1048576
m_MipsStripped: 0 m_MipsStripped: 0
m_TextureFormat: 1 m_TextureFormat: 1
m_MipCount: 1 m_MipCount: 1
@@ -180,8 +334,8 @@ Texture2D:
m_LightmapFormat: 0 m_LightmapFormat: 0
m_ColorSpace: 1 m_ColorSpace: 1
m_PlatformBlob: m_PlatformBlob:
image data: 1 image data: 1048576
_typelessdata: 00 _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a131313131313131313131313131212121212121212121212121212121212121212110f0d0a070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416172020202020202020202020201f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1e1e1c1a171413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
m_StreamData: m_StreamData:
serializedVersion: 2 serializedVersion: 2
offset: 0 offset: 0
@@ -60,8 +60,293 @@ MonoBehaviour:
m_SourceFontFilePath: m_SourceFontFilePath:
m_AtlasPopulationMode: 1 m_AtlasPopulationMode: 1
InternalDynamicOS: 0 InternalDynamicOS: 0
m_GlyphTable: [] m_GlyphTable:
m_CharacterTable: [] - m_Index: 185
m_Metrics:
m_Width: 43.953125
m_Height: 8.796875
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 13.1875
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 10
m_Y: 10
m_Width: 45
m_Height: 10
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 66
m_Metrics:
m_Width: 52.734375
m_Height: 8.796875
m_HorizontalBearingX: 0
m_HorizontalBearingY: 8.796875
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 74
m_Y: 10
m_Width: 53
m_Height: 9
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 47
m_Metrics:
m_Width: 43.953125
m_Height: 61.53125
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 65.921875
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 146
m_Y: 10
m_Width: 45
m_Height: 62
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 82
m_Metrics:
m_Width: 43.953125
m_Height: 48.34375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 52.734375
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 74
m_Y: 38
m_Width: 45
m_Height: 49
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 68
m_Metrics:
m_Width: 43.953125
m_Height: 52.734375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 57.125
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 10
m_Y: 39
m_Width: 45
m_Height: 54
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 71
m_Metrics:
m_Width: 43.953125
m_Height: 61.53125
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 65.921875
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 210
m_Y: 10
m_Width: 45
m_Height: 62
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 76
m_Metrics:
m_Width: 26.359375
m_Height: 57.140625
m_HorizontalBearingX: 13.1875
m_HorizontalBearingY: 61.53125
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 274
m_Y: 10
m_Width: 27
m_Height: 58
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 81
m_Metrics:
m_Width: 43.953125
m_Height: 48.34375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 52.734375
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 320
m_Y: 10
m_Width: 45
m_Height: 49
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 74
m_Metrics:
m_Width: 43.953125
m_Height: 52.734375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 57.125
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 384
m_Y: 10
m_Width: 45
m_Height: 54
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 3
m_Metrics:
m_Width: 0
m_Height: 0
m_HorizontalBearingX: 0
m_HorizontalBearingY: 0
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 0
m_Y: 0
m_Width: 0
m_Height: 0
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 90
m_Metrics:
m_Width: 43.953125
m_Height: 48.34375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 52.734375
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 320
m_Y: 78
m_Width: 45
m_Height: 49
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 69
m_Metrics:
m_Width: 43.953125
m_Height: 61.53125
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 65.921875
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 138
m_Y: 91
m_Width: 45
m_Height: 62
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 72
m_Metrics:
m_Width: 43.953125
m_Height: 48.34375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 52.734375
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 74
m_Y: 106
m_Width: 45
m_Height: 49
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 83
m_Metrics:
m_Width: 43.953125
m_Height: 52.734375
m_HorizontalBearingX: 4.390625
m_HorizontalBearingY: 57.125
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 10
m_Y: 112
m_Width: 45
m_Height: 54
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 87
m_Metrics:
m_Width: 26.359375
m_Height: 61.53125
m_HorizontalBearingX: 13.1875
m_HorizontalBearingY: 65.921875
m_HorizontalAdvance: 52.734375
m_GlyphRect:
m_X: 274
m_Y: 87
m_Width: 27
m_Height: 62
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
m_CharacterTable:
- m_ElementType: 1
m_Unicode: 8230
m_GlyphIndex: 185
m_Scale: 1
- m_ElementType: 1
m_Unicode: 95
m_GlyphIndex: 66
m_Scale: 1
- m_ElementType: 1
m_Unicode: 76
m_GlyphIndex: 47
m_Scale: 1
- m_ElementType: 1
m_Unicode: 111
m_GlyphIndex: 82
m_Scale: 1
- m_ElementType: 1
m_Unicode: 97
m_GlyphIndex: 68
m_Scale: 1
- m_ElementType: 1
m_Unicode: 100
m_GlyphIndex: 71
m_Scale: 1
- m_ElementType: 1
m_Unicode: 105
m_GlyphIndex: 76
m_Scale: 1
- m_ElementType: 1
m_Unicode: 110
m_GlyphIndex: 81
m_Scale: 1
- m_ElementType: 1
m_Unicode: 103
m_GlyphIndex: 74
m_Scale: 1
- m_ElementType: 1
m_Unicode: 32
m_GlyphIndex: 3
m_Scale: 1
- m_ElementType: 1
m_Unicode: 119
m_GlyphIndex: 90
m_Scale: 1
- m_ElementType: 1
m_Unicode: 98
m_GlyphIndex: 69
m_Scale: 1
- m_ElementType: 1
m_Unicode: 101
m_GlyphIndex: 72
m_Scale: 1
- m_ElementType: 1
m_Unicode: 112
m_GlyphIndex: 83
m_Scale: 1
- m_ElementType: 1
m_Unicode: 116
m_GlyphIndex: 87
m_Scale: 1
m_AtlasTextures: m_AtlasTextures:
- {fileID: 948717598527772745} - {fileID: 948717598527772745}
m_AtlasTextureIndex: 0 m_AtlasTextureIndex: 0
@@ -72,12 +357,100 @@ MonoBehaviour:
m_AtlasHeight: 1024 m_AtlasHeight: 1024
m_AtlasPadding: 9 m_AtlasPadding: 9
m_AtlasRenderMode: 4165 m_AtlasRenderMode: 4165
m_UsedGlyphRects: [] m_UsedGlyphRects:
m_FreeGlyphRects:
- m_X: 0 - m_X: 0
m_Y: 0 m_Y: 0
m_Width: 1023 m_Width: 64
m_Height: 29
- m_X: 64
m_Y: 0
m_Width: 72
m_Height: 28
- m_X: 136
m_Y: 0
m_Width: 64
m_Height: 81
- m_X: 64
m_Y: 28
m_Width: 64
m_Height: 68
- m_X: 0
m_Y: 29
m_Width: 64
m_Height: 73
- m_X: 200
m_Y: 0
m_Width: 64
m_Height: 81
- m_X: 264
m_Y: 0
m_Width: 46
m_Height: 77
- m_X: 310
m_Y: 0
m_Width: 64
m_Height: 68
- m_X: 374
m_Y: 0
m_Width: 64
m_Height: 73
- m_X: 310
m_Y: 68
m_Width: 64
m_Height: 68
- m_X: 128
m_Y: 81
m_Width: 64
m_Height: 81
- m_X: 64
m_Y: 96
m_Width: 64
m_Height: 68
- m_X: 0
m_Y: 102
m_Width: 64
m_Height: 73
- m_X: 264
m_Y: 77
m_Width: 46
m_Height: 81
m_FreeGlyphRects:
- m_X: 438
m_Y: 0
m_Width: 585
m_Height: 1023 m_Height: 1023
- m_X: 374
m_Y: 73
m_Width: 649
m_Height: 950
- m_X: 128
m_Y: 28
m_Width: 8
m_Height: 53
- m_X: 128
m_Y: 162
m_Width: 895
m_Height: 861
- m_X: 0
m_Y: 175
m_Width: 1023
m_Height: 848
- m_X: 64
m_Y: 164
m_Width: 959
m_Height: 859
- m_X: 192
m_Y: 81
m_Width: 72
m_Height: 942
- m_X: 192
m_Y: 158
m_Width: 831
m_Height: 865
- m_X: 310
m_Y: 136
m_Width: 713
m_Height: 887
m_FontFeatureTable: m_FontFeatureTable:
m_MultipleSubstitutionRecords: [] m_MultipleSubstitutionRecords: []
m_LigatureSubstitutionRecords: m_LigatureSubstitutionRecords:
@@ -159,9 +532,9 @@ Texture2D:
Hash: 00000000000000000000000000000000 Hash: 00000000000000000000000000000000
m_IsAlphaChannelOptional: 0 m_IsAlphaChannelOptional: 0
serializedVersion: 4 serializedVersion: 4
m_Width: 1 m_Width: 1024
m_Height: 1 m_Height: 1024
m_CompleteImageSize: 1 m_CompleteImageSize: 1048576
m_MipsStripped: 0 m_MipsStripped: 0
m_TextureFormat: 1 m_TextureFormat: 1
m_MipCount: 1 m_MipCount: 1
@@ -186,8 +559,8 @@ Texture2D:
m_LightmapFormat: 0 m_LightmapFormat: 0
m_ColorSpace: 1 m_ColorSpace: 1
m_PlatformBlob: m_PlatformBlob:
image data: 1 image data: 1048576
_typelessdata: 00 _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b0e0e0e0e0e0e0e0e0807050200000306070e0e0e0e0e0e0e0e0c0c0a0602000407090a0e0e0e0e0e0e0e0e090806030000000000000000000000050a0f121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313100f0d090500000000000000000000000005080a0b0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0908060300000000000000000000000000000000000000000000000000000407090a0e0e0e0e0e0e0e0e0e0e0e0e0c0c0a0602000407090a0e0e0e0e0e0e0e0e09080603000000000000000000000000000000000000000000000000000000000000020507080e0e0e0e0e0e0e0e0b0a08050000000000000000000000000005080a0b0e0e0e0e0e0e0e0e08070502000000000000000000000000000000000000000407090a0e0e0e0e0e0e0e0e0908060300000000000000000000000000000000000000000002060a0c0d0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0b0a0805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517181b1b1b1b1b1b1b1b1514120e090c1012131b1b1b1b1b1b1b1b191816120d0b101416171b1b1b1b1b1b1b1b1615130f0a0400000000000000010910161b1e20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201d1c1915100a030000000000000000060c111517181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1615130f0a0400000000000000000000000000000000000000000000050b101316161b1b1b1b1b1b1b1b1b1b1b1b191816120d0b101416171b1b1b1b1b1b1b1b1615130f0a04000000000000000000000000000000000000000000000000000003090e1214151b1b1b1b1b1b1b1b171714110c05000000000000000000060c111517181b1b1b1b1b1b1b1b1514120e0903000000000000000000000000000000050b101416171b1b1b1b1b1b1b1b1615130f0a04000000000000000000000000000000000000070d121619191b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b171714110c05000000000000000000000000000000000000Line truncated
m_StreamData: m_StreamData:
serializedVersion: 2 serializedVersion: 2
offset: 0 offset: 0
@@ -215,8 +215,198 @@ MonoBehaviour:
m_SourceFontFilePath: m_SourceFontFilePath:
m_AtlasPopulationMode: 1 m_AtlasPopulationMode: 1
InternalDynamicOS: 0 InternalDynamicOS: 0
m_GlyphTable: [] m_GlyphTable:
m_CharacterTable: [] - m_Index: 969
m_Metrics:
m_Width: 48
m_Height: 59
m_HorizontalBearingX: 7
m_HorizontalBearingY: 59
m_HorizontalAdvance: 62
m_GlyphRect:
m_X: 10
m_Y: 10
m_Width: 48
m_Height: 59
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 996
m_Metrics:
m_Width: 24
m_Height: 45
m_HorizontalBearingX: 5
m_HorizontalBearingY: 45
m_HorizontalAdvance: 31
m_GlyphRect:
m_X: 10
m_Y: 88
m_Width: 24
m_Height: 45
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 1009
m_Metrics:
m_Width: 40
m_Height: 64
m_HorizontalBearingX: 5
m_HorizontalBearingY: 46
m_HorizontalAdvance: 48
m_GlyphRect:
m_X: 10
m_Y: 152
m_Width: 40
m_Height: 64
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 993
m_Metrics:
m_Width: 45
m_Height: 47
m_HorizontalBearingX: 3
m_HorizontalBearingY: 46
m_HorizontalAdvance: 48
m_GlyphRect:
m_X: 10
m_Y: 235
m_Width: 45
m_Height: 47
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 1011
m_Metrics:
m_Width: 37
m_Height: 45
m_HorizontalBearingX: 1
m_HorizontalBearingY: 45
m_HorizontalAdvance: 39
m_GlyphRect:
m_X: 53
m_Y: 88
m_Width: 37
m_Height: 45
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 1021
m_Metrics:
m_Width: 37
m_Height: 45
m_HorizontalBearingX: 5
m_HorizontalBearingY: 45
m_HorizontalAdvance: 45
m_GlyphRect:
m_X: 77
m_Y: 10
m_Width: 37
m_Height: 45
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 963
m_Metrics:
m_Width: 46
m_Height: 59
m_HorizontalBearingX: 7
m_HorizontalBearingY: 59
m_HorizontalAdvance: 57
m_GlyphRect:
m_X: 69
m_Y: 152
m_Width: 46
m_Height: 59
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 1020
m_Metrics:
m_Width: 51
m_Height: 45
m_HorizontalBearingX: 5
m_HorizontalBearingY: 45
m_HorizontalAdvance: 62
m_GlyphRect:
m_X: 109
m_Y: 74
m_Width: 51
m_Height: 45
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 1002
m_Metrics:
m_Width: 38
m_Height: 63
m_HorizontalBearingX: 5
m_HorizontalBearingY: 63
m_HorizontalAdvance: 48
m_GlyphRect:
m_X: 10
m_Y: 301
m_Width: 38
m_Height: 63
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
- m_Index: 1001
m_Metrics:
m_Width: 38
m_Height: 45
m_HorizontalBearingX: 5
m_HorizontalBearingY: 45
m_HorizontalAdvance: 48
m_GlyphRect:
m_X: 133
m_Y: 10
m_Width: 38
m_Height: 45
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
m_CharacterTable:
- m_ElementType: 1
m_Unicode: 1048
m_GlyphIndex: 969
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1075
m_GlyphIndex: 996
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1088
m_GlyphIndex: 1009
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1072
m_GlyphIndex: 993
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1090
m_GlyphIndex: 1011
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1100
m_GlyphIndex: 1021
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1042
m_GlyphIndex: 963
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1099
m_GlyphIndex: 1020
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1081
m_GlyphIndex: 1002
m_Scale: 1
- m_ElementType: 1
m_Unicode: 1080
m_GlyphIndex: 1001
m_Scale: 1
m_AtlasTextures: m_AtlasTextures:
- {fileID: 28268798066460806} - {fileID: 28268798066460806}
m_AtlasTextureIndex: 0 m_AtlasTextureIndex: 0
@@ -227,11 +417,83 @@ MonoBehaviour:
m_AtlasHeight: 512 m_AtlasHeight: 512
m_AtlasPadding: 9 m_AtlasPadding: 9
m_AtlasRenderMode: 4169 m_AtlasRenderMode: 4169
m_UsedGlyphRects: [] m_UsedGlyphRects:
m_FreeGlyphRects:
- m_X: 0 - m_X: 0
m_Y: 0 m_Y: 0
m_Width: 67
m_Height: 78
- m_X: 0
m_Y: 78
m_Width: 43
m_Height: 64
- m_X: 0
m_Y: 142
m_Width: 59
m_Height: 83
- m_X: 0
m_Y: 225
m_Width: 64
m_Height: 66
- m_X: 43
m_Y: 78
m_Width: 56
m_Height: 64
- m_X: 67
m_Y: 0
m_Width: 56
m_Height: 64
- m_X: 59
m_Y: 142
m_Width: 65
m_Height: 78
- m_X: 99
m_Y: 64
m_Width: 70
m_Height: 64
- m_X: 0
m_Y: 291
m_Width: 57
m_Height: 82
- m_X: 123
m_Y: 0
m_Width: 57
m_Height: 64
m_FreeGlyphRects:
- m_X: 59
m_Y: 220
m_Width: 452
m_Height: 5
- m_X: 64
m_Y: 220
m_Width: 447
m_Height: 291
- m_X: 67
m_Y: 64
m_Width: 32
m_Height: 14
- m_X: 99
m_Y: 128
m_Width: 412
m_Height: 14
- m_X: 124
m_Y: 128
m_Width: 387
m_Height: 383
- m_X: 0
m_Y: 373
m_Width: 511 m_Width: 511
m_Height: 138
- m_X: 57
m_Y: 291
m_Width: 454
m_Height: 220
- m_X: 169
m_Y: 64
m_Width: 342
m_Height: 447
- m_X: 180
m_Y: 0
m_Width: 331
m_Height: 511 m_Height: 511
m_FontFeatureTable: m_FontFeatureTable:
m_MultipleSubstitutionRecords: [] m_MultipleSubstitutionRecords: []
@@ -1153,9 +1415,9 @@ Texture2D:
Hash: 00000000000000000000000000000000 Hash: 00000000000000000000000000000000
m_IsAlphaChannelOptional: 0 m_IsAlphaChannelOptional: 0
serializedVersion: 4 serializedVersion: 4
m_Width: 1 m_Width: 512
m_Height: 1 m_Height: 512
m_CompleteImageSize: 1 m_CompleteImageSize: 262144
m_MipsStripped: 0 m_MipsStripped: 0
m_TextureFormat: 1 m_TextureFormat: 1
m_MipCount: 1 m_MipCount: 1
@@ -1180,8 +1442,8 @@ Texture2D:
m_LightmapFormat: 0 m_LightmapFormat: 0
m_ColorSpace: 0 m_ColorSpace: 0
m_PlatformBlob: m_PlatformBlob:
image data: 1 image data: 262144
_typelessdata: 00 _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c10121213131313131313131208070502000000000000000000000000000000000000000000000005080a0b131313131313100f0d0a0500000000000000000000000000040613131313131313131313131313131313131313131211110f0c0a0707050100000000000000000000000000000000000000000000000004061313131313131313130b0a080400000000000000000000000000020507081313131313131307070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d13181c1e1f20202020202020201f1414110e080200000000000000000000000000000000000000060c111517182020202020201d1c1a16110a03000000000000000001070c101320202020202020202020202020202020202020201f1e1d1c19171413110d08040000000000000000000000000000000000000001070c1013202020202020202020171614100b0500000000000000000003090e121415202020202020201413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710181f24282b2c2d2d2d2d2d2d2d2d2c21201e19140d0500000000000000000000000000000000000911171d2124252d2d2d2d2d2d2a2926221c150d04000000000000030b12181c1f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a28262421201d1913100c0701000000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2d2423211c17100800000000000000060e141a1e21222d2d2d2d2d2d2d21201d19130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000610192229303538393939393939393939392e2d2a251e170e0500000000000000000000000000000009121b22292d30313939393939393635322d271f160d0300000000030d151d23292c39393939393939393939393939393939393939393838373533302e2d29251f1d18120b0300000000000000000000000000030d151d23292c39393939393939393931302d28221a12080000000000060f181f262b2d2e393939393939392e2d2a251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
m_StreamData: m_StreamData:
serializedVersion: 2 serializedVersion: 2
offset: 0 offset: 0