0

我是 c# 新手,正在寻找如何在我的 winform 中调用全局对象实例。

 namespace BeastEngine {
     public partial class Form1 : Form
     {

          private  Root mRoot = new Root();
          private  RenderWindow mWindow;
          private  SceneManager mgr = mRoot.CreateSceneManager(SceneType.ST_GENERIC);
          private Camera cam = mgr.CreateCamera("Camera");

现在我像这样调用我的变量,但是我遇到了各种错误。

private void meshToolStripMenuItem_Click(object sender, EventArgs e)
      {
          Entity ent = mgr.CreateEntity("ninja", "ninja.mesh");
          mgr.RootSceneNode.CreateChildSceneNode().AttachObject(ent);
          cam.LookAt(ent.BoundingBox.Center);
      }

我想要它,以便我的所有功能都可以使用一个实例。有谁知道正确的方法?我到处都用谷歌搜索过。

4

2 回答 2

1

您正在寻找单例模式。如果你搜索它,你应该得到更多的结果。

这是 Microsoft 对实施 Singleton的建议。

于 2013-03-03T03:29:58.890 回答
0

您不能在构造函数之外使用实例变量

private Root mRoot = new Root();
private SceneManager mgr = mRoot.CreateSceneManager(SceneType.ST_GENERIC);
private Camera cam = mgr.CreateCamera("Camera");

您应该在构造函数中实例化它。

private Root mRoot;
private SceneManager mgr;
private Camera cam;

public Form1()
{ 
    mRoot = new Root();
    mgr = mRoot.CreateSceneManager(SceneType.ST_GENERIC);
    cam = mgr.CreateCamera("Camera");
}

如果要确保知道这仅在构造时创建,则可以使变量readonly

这是一篇关于构造函数的文章

查看 Jon Skeet 的答案以获取更多信息

于 2013-03-03T03:28:58.847 回答