1

我有一个 ScriptableObjectInstaller

public class Settings : ScriptableObjectInstaller<Settings>
{
    [Header("Gravity settings")] public GravityHandler.Settings GravitySettings;
    [Header("Movement settings")] public MovementHandler.Settings MovementSettings;

    public override void InstallBindings()
    {
        Container.BindInstance(GravitySettings);
        Container.BindInstance(MovementSettings);
    }
}

和一堂课

public class GravityHandler : IGravityHandler
{
    private readonly Settings _settings;
    private readonly BoxCollider2D _groundBox2D;

    public GravityHandler(BoxCollider2D groundBox2D, Settings settings)
    {
        _groundBox2D = groundBox2D;
        _settings = settings;
    }

    public bool IsGrounded()
    {
        if (_groundBox2D.OverlapCollider(_settings.ContactFilter2D, null) > 0)
            return true;
        return false;
    }

    [Serializable]
    public class Settings
    {
        public ContactFilter2D ContactFilter2D;
        public Vector3 GravityForce=new Vector2(0, -9.8f);
    }
}

我想要的只是能够更改 Settings.GravitySettings,然后将其值注入 GravityHandler._settings,这样我就可以使用 GravityHandler 中的设置。但是当我验证我的场景时,它会显示一个错误:

ZenjectException:在构建类型为“GravityHandler”的对象时无法解析类型“GravityHandler+Settings”。对象图:Player MovementHandler GravityHandler

我做错了什么以及如何解决这个问题?

4

1 回答 1

1

好的,我只是忘记将可编写脚本的对象放入 SceneContext。我还必须更改它的名称以匹配班级的名称。

于 2017-07-19T11:47:08.600 回答