0

私は現在、XNAの上に構築されたカスタムレンダリングエンジンを使用して、ボタン、ラベル、パネルなどのUI要素を描画するプロジェクトに取り組んでいます。

エンジンの構造は比較的シンプルです。いくつかのゲーム スクリーンを保持するスクリーン マネージャーがあります。ゲーム画面は、GameView というエンジンの基本クラスを拡張して実装されています。GameView クラスは、UI 要素の階層を処理します。

開発者がいくつかの UI コントロールをゲーム ビューに追加する方法は非常に単純で、そのロジックは ASP.NET コントロールの階層構造に触発されています。LoadControls() というメソッドをオーバーライドし、必要なコントロールのインスタンスを作成して、それらを GameView コントロール コレクションに追加する必要があります。

ここに例があります:

    public override void LoadControls()
    {
        ImageFrame titleImage = new ImageFrame();
        titleImage.ID = "TitleImage";
        titleImage.Move(GameUI.Location(ViewLocation.CenterTop, -332, 4));
    titleImage.Width = 664;
    titleImage.Height = 166;
        titleImage.Image = "image_title";
        this.UI.Controls.Add(titleImage);

        ImageFrame freeImage = new ImageFrame();
        freeImage.ID = "FreeImage";
        freeImage.Move(GameUI.Location(ViewLocation.CenterTop, 160, 95));
        freeImage.Width = 170;
        freeImage.Height = 76;
        freeImage.Image = "image_free";
        freeImage.IsVisible = GameContext.Current.IsTrialMode;
        this.UI.Controls.Add(freeImage);

        Button playButton = new Button();
        playButton.ID = "PlayGameButton";
        playButton.Width = 216;
        playButton.Height = 96;
        playButton.Move(GameUI.Location(ViewLocation.CenterTop, -108, 130));
        playButton.Text = GameContext.Current.Dictionary[StringKeys.PlayGameButtonText];
        playButton.Font = FontNames.Floraless1;
        playButton.FontScale = 1.3f;
        playButton.FontPressedColor = Color.White * .8f;
        playButton.Click += new EventHandler<EventArgs>(PlayGameButton_Click);
        this.UI.Controls.Add(playButton);
    }

UI の作成はコードで非常に簡単ですが、複雑なレイアウトを作成する必要がある場合、結果を把握するのは非常に困難です。私のGameViewコントロール階層の結果の「ビュー」をレンダリングするVS2010用のカスタム拡張を開発できるかどうか疑問に思っていました。UI デザイナーを作成する必要はありません。コード エディターで手書きのコードを読み取り、ビジュアル スタジオにいる間 (アプリケーションを実行していないとき) に結果をリアルタイムでレンダリングするだけで済みます。

つまり、Visual Studio 2010 を拡張して、.cs コードをリアルタイムで解析し、レンダリング出力を生成するカスタム「デザイナー」を作成することは可能ですか?

4

1 に答える 1

0

これで始められるかもしれません:カスタム Visual Studio デザイナーを作成する

于 2012-12-30T13:29:09.953 に答える