我创建了一个小的
Presettable
系统:每个Presettable
对象都有一个Preset
字段,其中Preset
只是一个ScriptableObject
:
public abstract class PresettableMonoBehaviour<TPreset>: MonoBehaviour, IPresettable<TPreset>
where TPreset : IPreset
{
[SerializeField]
private TPreset preset;
public TPreset Preset => preset;
...
}
假设我定义了这个简单的
Presettable
/Preset
对:
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;
}
理想情况下,我希望能够通过仅调用
Preset.RelevantNumber
来访问RelevantNumber
,因为从逻辑上讲它直接是MyPresettable
的一部分。但是我不想定义属性来逐一访问每个Preset
的字段,我想自动生成(显式或隐式)履行与private int RelevantNumber => Preset.RelevantNumber;
相同角色的属性
可能吗?
我尝试查看自定义属性,但问题没有改变:我仍然需要调用
myAttribute.RelevantField
.
另一种选择是使用字符串和反射,但是我不太喜欢它,因为它要求您知道您的每个字段的确切名称
Preset