I created a small Presettable
system: each Presettable
object has a Preset
field where Preset
is simply a ScriptableObject
:
public abstract class PresettableMonoBehaviour<TPreset>: MonoBehaviour, IPresettable<TPreset>
where TPreset : IPreset
{
[SerializeField]
private TPreset preset;
public TPreset Preset => preset;
...
}
Let's assume I defined this simple Presettable
/Preset
pair:
public class MyPresettable : PresettableMonoBehaviour<MyPreset>
{
public int RelevantNumberIncremented() { return Preset.RelevantNumber + 1; }
}
public class MyPreset : Preset<MyPresettable>
{
[field: SerializeField]
public int RelevantNumber { get; private set; } = 10;
}
Ideally, I'd like to be able to access Preset.RelevantNumber
by calling only RelevantNumber
because logically it is directly part of MyPresettable
. However I don't want to define properties to access each Preset
's field one by one, I'd like to automatically generate (explicitly or implicitly) properties that fulfils the same role as private int RelevantNumber => Preset.RelevantNumber;
Is it possible?
I tried to look into custom Attributes, but the problem didn't change: I'd still have to call myAttribute.RelevantField
.
Another option is to use strings and reflection, however I don't really like it because it requires you to know the exact name of every field in your Preset
Aucun commentaire:
Enregistrer un commentaire