Ada*_*dam 1 c# unity-game-engine winforms
我用Python + Pygame制作了这个游戏,但速度很慢,所以我用C#和它的形式进行了尝试.它甚至更慢!我在i5 radeon 6770m NTB上只获得了20fps,比我希望这个游戏运行的硬件快了数百万倍,我还没有完成游戏,它只是渲染一张地图.这是一个用缓慢的几MHz处理器运行的游戏的翻版.它的地图包含400x200瓷砖和相机显示仅79*79.我还安装了团结4.5; 是否值得学习它,它会给我带来显着的性能提升 - 如果有人知道它我将如何做一个由600*400瓷砖随机组成的地图,无论是深色瓷砖还是亮色; 它必须是"可碰撞的"?或者我在形式上做错了?
public void render()
{
Bitmap frame = new Bitmap(Game.CANVAS_WIDTH, Game.CANVAS_HEIGHT);
Graphics frameGraphics = Graphics.FromImage(frame);
TextureID[,] textures = Background.Blocks;
while (true)
{
//frameGraphics.FillRectangle(new SolidBrush(Color.Aqua), 0, 0, Game.CANVAS_WIDTH, Game.CANVAS_HEIGHT);
for (int x = 0; x < Game.AR_WIDTH; x++)
{
int xx = x * Game.TILE_SIDE - game.green_tank_pos[0] + Game.DIFF;
if (xx < 0) continue;
if (xx > Game.CANVAS_WIDTH) break;
for (int y = 0; y < Game.AR_HEIGHT; y++)
{
int yy = y * Game.TILE_SIDE - game.green_tank_pos[1] + Game.DIFF;
if (yy < 0) continue;
if (yy > Game.CANVAS_HEIGHT) continue;
switch(textures[x,y])
{
case TextureID.dark:
frameGraphics.DrawImage(tex_dark_gnd, xx, yy);
break;
case TextureID.bright:
frameGraphics.DrawImage(tex_bright_gnd, x * Game.TILE_SIDE - game.green_tank_pos[0] + Game.DIFF, y * Game.TILE_SIDE - game.green_tank_pos[1] + Game.DIFF);
break;
}
}
}
frameGraphics.DrawImage(tex_green_tank, Game.DIFF, Game.DIFF);
drawHandle.DrawImage(frame, 0, 0);
Run Code Online (Sandbox Code Playgroud)
WinForms是一个糟糕的游戏平台,甚至是2D平台.它适用于业务线应用程序,包括很少甚至没有硬件加速.
此外,该技术很难编写游戏,更不用说高效的游戏了.你可能会使用WPF来完成一个非常简单的游戏,但你真的想学习XNA,MonoGame,Unity或其他一些可以利用DirectX的实际游戏平台(WPF也可以这样做,顺便说一下).
归档时间: |
|
查看次数: |
1340 次 |
最近记录: |