C# C GTA。图形没有定义构造函数

C# C GTA。图形没有定义构造函数,c#,C#,我正在为一个游戏编写脚本,我遇到了一个错误类型“GTA.Graphics”没有定义构造函数。下面是代码: GTA.Graphics graphics = new GTA.Graphics(); public void showFPS() { string fps = Game.FPS.ToString(); if (Player.Character.isAlive) { graphics.Dra

我正在为一个游戏编写脚本,我遇到了一个错误类型“GTA.Graphics”没有定义构造函数。下面是代码:

        GTA.Graphics graphics = new GTA.Graphics();


    public void showFPS()
    {
        string fps = Game.FPS.ToString();
        if (Player.Character.isAlive)
        {
         graphics.DrawText(fps, 0.9f, 0.1f);
        }
    }
BindKey(Keys.F7, new KeyPressDelegate(showFPS));
        PerFrameDrawing += tehDrawingMaster;
    }

    bool drawFPS = false;

    public void showFPS()
    {
        drawFPS = !drawFPS;
    }

    public void tehDrawingMaster(object sender, GTA.GraphicsEventArgs e)
    {
        if (drawFPS) e.Graphics.DrawText(Game.FPS.ToString(), 20, 20, System.Drawing.Color.Black)
任何帮助都将不胜感激。谢谢

@DOOMDUDEMX

我做到了

public void showFPS(GTA.GraphicsEventArgs e)
    {

        string fps = Game.FPS.ToString();
         e.Graphics.DrawText(fps, 0.9f, 0.1f);
        }
这可以工作,但会导致我的代码出现问题,我从中得到的错误是“showFPS”没有重载,与委托“GTA.KeyPressDelegate”匹配

以下是切换代码:BindKeyKeys.F7,new keypress delegateshowfps

gtaforums.com上的LetsPlayOrDy为我提供了解决方案:

1:当BindKey接受函数时,该函数不应该有如下参数:public void showFPS

2:如果你想画东西,你必须使用PerFrameDrawing

以及守则:

        GTA.Graphics graphics = new GTA.Graphics();


    public void showFPS()
    {
        string fps = Game.FPS.ToString();
        if (Player.Character.isAlive)
        {
         graphics.DrawText(fps, 0.9f, 0.1f);
        }
    }
BindKey(Keys.F7, new KeyPressDelegate(showFPS));
        PerFrameDrawing += tehDrawingMaster;
    }

    bool drawFPS = false;

    public void showFPS()
    {
        drawFPS = !drawFPS;
    }

    public void tehDrawingMaster(object sender, GTA.GraphicsEventArgs e)
    {
        if (drawFPS) e.Graphics.DrawText(Game.FPS.ToString(), 20, 20, System.Drawing.Color.Black)

非常感谢大家。

您需要了解更多有关面向对象的知识

Graphics可能是一个抽象类,这意味着您无法创建它的实例。 您需要做的是创建一个从GTA.Graphics继承的新类(如果您的情况可能的话),并编写类似GTA.Graphics=new InheritedGraphics的代码

如果GTA.Graphics来自一个库,那么甚至可能有其他类已经从GTA.Graphics继承,您可以创建它的实例

然而,正如我所说,您需要了解的是面向对象编程。
你应该能够很容易地在任何关于这个主题的书或文章中找到构造函数的概念。

错误信息还不够清楚吗?我试过做GTA.Graphics Graphics=new GTA.GraphicsshowFPS;但那没用。请原谅我,我还是一个初学者,但我正在尽我最大的努力学习。那么内部构造函数呢?他不能这么说这是真的!然而,底线仍然是,他需要更多地了解面向对象。他似乎缺乏这一概念的知识。提到一个内部构造函数,可能不会告诉他太多。当然,除非我把情况解释错了。你能发布整个文件吗?你是指实际的项目文件还是我写的代码?我刚想到你正试图为GTA San Andreas制作一个mod,对吗?尝试更改函数,使其也接受一个n对象,如下所示:public void showFPSobject sender,GTA.graphicseventergs e{string fps=Game.fps.ToString;e.Graphics.DrawTextfps,0.9f,0.1f;}