91 lines
3.3 KiB
C#
91 lines
3.3 KiB
C#
![]() |
// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
|
||
|
|
||
|
#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
|
||
|
|
||
|
using System.IO;
|
||
|
using UnityEngine;
|
||
|
|
||
|
#if UNITY_UGUI
|
||
|
using UnityEngine.UI;
|
||
|
#endif
|
||
|
|
||
|
namespace Animancer.Samples.Mixers
|
||
|
{
|
||
|
/// <summary>Uses buttons to save and load the current animation details.</summary>
|
||
|
///
|
||
|
/// <remarks>
|
||
|
/// <strong>Sample:</strong>
|
||
|
/// <see href="https://kybernetik.com.au/animancer/docs/samples/mixers/serialization">
|
||
|
/// Animation Serialization</see>
|
||
|
/// </remarks>
|
||
|
///
|
||
|
/// https://kybernetik.com.au/animancer/api/Animancer.Samples.Mixers/SaveLoadButtons
|
||
|
///
|
||
|
[AddComponentMenu(Strings.SamplesMenuPrefix + "Mixers - Save Load Buttons")]
|
||
|
[AnimancerHelpUrl(typeof(SaveLoadButtons))]
|
||
|
public class SaveLoadButtons : MonoBehaviour
|
||
|
{
|
||
|
/************************************************************************************************************************/
|
||
|
#if UNITY_UGUI && UNITY_JSON_SERIALIZE
|
||
|
/************************************************************************************************************************/
|
||
|
|
||
|
[SerializeField] private AnimancerComponent _Animancer;
|
||
|
[SerializeField] private StringAsset _SpeedParameter;
|
||
|
[SerializeField] private Button _SaveButton;
|
||
|
[SerializeField] private Button _LoadButton;
|
||
|
[SerializeField] private string _FilePath = "Temp/AnimancerSerializedPose.json";
|
||
|
|
||
|
private readonly SerializablePose SerializablePose = new();
|
||
|
|
||
|
/************************************************************************************************************************/
|
||
|
|
||
|
protected virtual void Awake()
|
||
|
{
|
||
|
|
||
|
_SaveButton.onClick.AddListener(Save);
|
||
|
_LoadButton.onClick.AddListener(Load);
|
||
|
}
|
||
|
|
||
|
/************************************************************************************************************************/
|
||
|
|
||
|
private void Save()
|
||
|
{
|
||
|
SerializablePose.GatherFrom(_Animancer, _SpeedParameter);
|
||
|
|
||
|
string json = JsonUtility.ToJson(SerializablePose);
|
||
|
|
||
|
File.WriteAllText(_FilePath, json);
|
||
|
}
|
||
|
|
||
|
/************************************************************************************************************************/
|
||
|
|
||
|
private void Load()
|
||
|
{
|
||
|
string json = File.ReadAllText(_FilePath);
|
||
|
|
||
|
JsonUtility.FromJsonOverwrite(json, SerializablePose);
|
||
|
|
||
|
SerializablePose.ApplyTo(_Animancer, _SpeedParameter);
|
||
|
}
|
||
|
|
||
|
/************************************************************************************************************************/
|
||
|
#else
|
||
|
/************************************************************************************************************************/
|
||
|
|
||
|
protected virtual void Awake()
|
||
|
{
|
||
|
#if !UNITY_JSON_SERIALIZE
|
||
|
SampleReadMe.LogMissingJsonSerializeModuleError(this);
|
||
|
#endif
|
||
|
|
||
|
#if !UNITY_UGUI
|
||
|
SampleReadMe.LogMissingUnityUIModuleError(this);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
/************************************************************************************************************************/
|
||
|
#endif
|
||
|
/************************************************************************************************************************/
|
||
|
}
|
||
|
}
|