谷歌充斥着 Unity3D 和 XNA 资源。如果没有绝大多数基于 Unity 或 XNA 的结果,很难搜索任何处理 C# 的内容。为了找到好的教程,我不得不在亚马逊上找到一本书,然后用 -XNA -Unity 搜索作者,哈哈。
我的 C++ 代码组织得很好,每个单独的主要类都是它自己的文件,在一个有组织的目录中。
Game.cpp
Init.cpp
Render.cpp
Update.cpp
Game.cpp,作为 main(),我的游戏在其中运行并调用 Init、Render 和 Update。
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();
}
}
当然,Init.cpp
#include "Game.hpp"
void Game::Init()
{
mWindow.setVerticalSyncEnabled(true);
}
现在,我有了 SFML 的 C# 绑定,并从 Code::Blocks 切换到 VS2012。我使用 C++ 已经很长时间了,以至于我在使用 C# 时遇到了一些问题。我浏览了一些教程来更新自己的语法,但有些东西我仍然不记得了。显然,这是一个愚蠢的问题。但是,由于 Unity 和 XNA 结果中大量使用 C#,谷歌并没有多大帮助,我只是不记得如何正确地做到这一点。
我想拥有相同的单独文件,
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#。