如何将此C++代码转换为 C# 代码?我忘记了什么语法

How to convert this C++ code into C# code? What syntax am I forgetting?

本文关键字:代码 忘记了 语法 什么 转换 C++      更新时间:2023-10-16

Google充斥着Unity3D和XNA资源。很难搜索任何处理 C# 的内容,除非结果绝大多数基于 Unity 或 XNA。为了找到好的教程,我不得不在亚马逊上找到一本书,然后用 -XNA -Unity 谷歌作者,哈哈。

我的C++代码组织得很好,每个单独的主类都是它自己的文件,在一个有组织的目录中。

Game.cpp
Init.cpp
Render.cpp
Update.cpp

游戏.cpp,是main(),我的游戏运行并调用Init,渲染和更新。

class Game
{
public:
Game();
private:
void Init();
void Update(sf::Time deltaTime);
void Render();
sf::RenderWindow mWindow;
};
int main()
{
Init();
while (mWindow.isOpen())
{
    Update(TimePerFrame);
    Render();
}
}

当然,还有初始化.cpp

#include "Game.hpp"
void Game::Init()
{
mWindow.setVerticalSyncEnabled(true);
}

现在,我有了SFML的C#绑定,并从Code::Blocks切换到VS2012。我已经使用 C++ 很长时间了,以至于我在使用 C# 时遇到了一些问题。我浏览了一些教程来刷新自己的语法,但有些东西我仍然不记得了。显然,这是一个愚蠢的问题。然而,谷歌并没有太大的帮助,因为 C# 在 Unity 和 XNA 结果中占了太多的份额,我只是不记得如何做到这一点。

我想拥有相同的单独文件,

 Game.cs
 Init.cs
 Update.cs
 Render.cs

但是,我什至无法让它在单个类中运行。

游戏.cs

class Game
{
    public void Main()
    {
        // Create the main window
        RenderWindow mWindow = new RenderWindow(new VideoMode(1200, 1200), "SevenBlack");
        mWindow.Closed += new EventHandler(OnClose);
        Color windowColor = new Color(0, 0, 0);
        //Initialize Game
        Init();
        while (mWindow.IsOpen())
        {
                Update(TimePerFrame);
        }
            Render();
        }
    }
    private void Init()
    {
        mWindow.setVerticalSyncEnabled(true);
    }
    private void Update(long dt)
    {
    }
    private void Render()
    {
        mWindow.Clear(windowColor);
        mWindow.Display();
    }
}

我得到"名称'mWindow'在当前上下文中不存在。

    private void Game::Init()
    {
        mWindow.setVerticalSyncEnabled(true);
    }

也不起作用,因为这是 C#。

mWindow 未声明为类级变量,因此它的唯一作用域在 main 中。 这样做是为了允许整个类看到变量。

class Game
{
    private RenderWindow mWindow;
    public void Main()
    {
        // Create the main window
        mWindow = new RenderWindow(new VideoMode(1200, 1200), "SevenBlack");
...