我认为最好通过代码来制定问题。我有一个基类。
public abstract class BaseUnit {
[System.Serializable]
public class Settings
{
}
}
例如,还有一些派生类。
public class Archer : BaseUnit {
public ArcherSettings Settings;
[System.Serializable]
public class ArcherSettings : Settings
{
//CanWalk is a MonoBehaviour and WalkSettings is a Serrializable class
public CanWalk.WalkSettings WalkSettings;
}
}
如您所见,我希望有几种具有适当 WalkSettings 的单元类型,这些单元类型将从 ScriptableObject 中设置。
public class ScriptableLevelInstaller : ScriptableObjectInstaller<ScriptableLevelInstaller>
{
public Archer.AracherSettings Aracher;
public Knight.KnightSettings Knight;
//Some more...
}
所以问题是如何使用 Zenject 将适当的设置注入到适当的类中,任何帮助或澄清都会非常有帮助。
---UPD---
我第一次表达得很糟糕。我想要的是将 CanWalk.WalkSetting 绑定到适当的设置。所以我可以
Container.Bind<CanWalk.WalkSettings>().FromInstance(Archer.WalkSettings);
但这是错误的,因为最后一个绑定只会覆盖每个班级的步行设置。所以我需要的是
Container.Bind<CanWalk.WalkSettings>().FromInstance(Archer.WalkSettings).WhenInjectInto("CanWalk which is attached to an Archer")
现在我只是在 Aracher 里面做这个。
GetComponent<CanWalk>().Settings = _settings.WalkSettings;
但也许 Zenject 中有一些东西可以解决这个问题。