Yes. You'd define your ScriptableObject like this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Spine;
using Spine.Unity;
namespace Spine.Unity.Examples {
[CreateAssetMenu(menuName = "My Sample Asset Thing")]
public class SampleSkeletonAsset : ScriptableObject, IHasSkeletonDataAsset {
public SkeletonDataAsset skeletonDataAsset;
// The IHasSkeletonDataAsset interface allows all your attributes to recognize the data source.
public SkeletonDataAsset SkeletonDataAsset {
get { return skeletonDataAsset; }
}
[SpineSlot] // this will know it is an IHasSkeletonDataAsset
public string mySlot;
[SpineSkin]
public string mySkin;
[SpineAttachment(skinField = "mySkin", slotField = "mySlot")]
public string myAttachment;
// If you have multiple, or don't want to define IHasSkeletonDataAsset,
// you can always specify which skeletonDataAsset field to use through dataField.
[SpineSlot(dataField = "skeletonDataAsset")]
public string mySecondSlot;
// ... Methods and Stuff...
}
}