首页 > 解决方案 > 如何转换此代码以便在 Unity 中使用?

问题描述

我有一个简单的 pong 项目,我在 Monogame 中创建了一个非常简单的决策树实现。

现在我正在尝试创建相同的游戏,而不是统一的逻辑。

我在 Dt 中的节点结构如下:

public DecisionTreeNode DecisionTreeAction(PaddleAI AI_Ball)
    {
        DecisionTreeNode rootnode = new DecisionTreeNode
        {
            TestFunction = (BallControls) => AI_Ball.StayAtSamePosition(),
            Yes = new Decision { evaluatedData = true },
            No = new Decision { evaluatedData = false }
        };

        DecisionTreeNode Stay = new DecisionTreeNode
        {
            TestFunction = (BallControls) => AI_Ball.StayAtSamePosition(),
            Yes = new Decision { evaluatedData = true },
            No = new Decision { evaluatedData = false }
        };

        DecisionTreeNode GoUp = new DecisionTreeNode
        {
            TestFunction = (BallControls) => AI_Ball.GoUP(),
            Yes = new Decision { evaluatedData = true },
            No = new Decision { evaluatedData = false }
        };

等等。

Unity 不像 monogame 那样使用 new 关键字。如何重新编写这些表达式,以便它们可以在 Unity 中使用?

DecisionTreeNode 是一个类。BallControls 是一个用于球逻辑的类。Paddle_AI 是一个具有 AI 桨移动功能的类。

TestFunction 是这样的:

public Func<BallControls, bool> TestFunction { get; set; }

标签: c#unity3dlambda

解决方案


推荐阅读