Files
rudder-unity-sdk/Assets/LiveOpsExamples/Editor/CozyCollectorBake.Assets.cs
T
2026-08-12 14:03:44 +03:00

61 lines
2.2 KiB
C#

using LiveOpsExamples;
using UnityEditor;
using UnityEngine;
namespace LiveOpsExamples.Editor
{
/// <summary>
/// Bakes the Cozy Collector ScriptableObject assets. Idempotent: writes to
/// fixed asset paths and overwrites whatever is already there.
/// </summary>
public static partial class CozyCollectorBake
{
private const string SpriteLibraryAssetPath = "Assets/LiveOpsExamples/CozyCollectorSpriteLibrary.asset";
private const string SpriteFolderPath = "Assets/LiveOpsExamples/Sprites";
[MenuItem("Tools/LiveOps/Bake Cozy Collector Assets")]
public static void BakeAssets()
{
var library = AssetDatabase.LoadAssetAtPath<CozyCollectorSpriteLibrary>(SpriteLibraryAssetPath);
if (library == null)
{
library = ScriptableObject.CreateInstance<CozyCollectorSpriteLibrary>();
AssetDatabase.CreateAsset(library, SpriteLibraryAssetPath);
}
var serialized = new SerializedObject(library);
AssignLibrarySprite(serialized, "background", "cozy-camp-bg.png");
AssignLibrarySprite(serialized, "player", "player.png");
AssignLibrarySprite(serialized, "moonberry", "moonberry.png");
AssignLibrarySprite(serialized, "acorn", "acorn.png");
AssignLibrarySprite(serialized, "star", "star.png");
AssignLibrarySprite(serialized, "snack", "snack.png");
serialized.ApplyModifiedPropertiesWithoutUndo();
EditorUtility.SetDirty(library);
AssetDatabase.SaveAssets();
Debug.Log($"Cozy Collector sprite library baked: {SpriteLibraryAssetPath}");
}
private static void AssignLibrarySprite(SerializedObject serialized, string fieldName, string fileName)
{
var spritePath = $"{SpriteFolderPath}/{fileName}";
var sprite = AssetDatabase.LoadAssetAtPath<Sprite>(spritePath);
if (sprite == null)
{
Debug.LogError($"CozyCollectorBake: sprite not found at {spritePath}");
return;
}
var property = serialized.FindProperty(fieldName);
if (property == null)
{
Debug.LogError($"CozyCollectorBake: field '{fieldName}' not found on {nameof(CozyCollectorSpriteLibrary)}");
return;
}
property.objectReferenceValue = sprite;
}
}
}