4

WinFormsHost-Control を使用して、Unity3D-ActiveX コントロールを WPF フォームに埋め込もうとしています。

実際、VS のプロパティ ウィンドウでパスを設定するとうまく機能しますが、コード ファイルで設定すると何も読み込まれません。これはコントロールの既知の問題ですが、フォーム デザイナーの作成コードをコピーして手動で初期化できると思いました。

初期化のコードを見ると、コードにプロパティがないことに気付きsrcましたが、プロパティ ウィンドウでプロパティが使用されています。プロパティを手動で設定しても機能しません (エラーがスローされます)。

いくつかのテストの後、プロパティのホール アセンブリをチェックすることにしましたsrcが、srcプロパティが設定されておらず、パスの文字列を見つけることさえできません。

最終的な考え

src-path が配置される場所は 1 つだけであることに気付きました: AxHost.Stateタイプのオブジェクトである、ウィンドウ フォーム デザイナーによって生成されたリソースです。

質問

AxHost.State指定した Unity3D ファイルをロードする必要がある Unity3D-ActiveX コントロールを初期化する有効なオブジェクトを作成するにはどうすればよいですか?

4

3 に答える 3

4

これは機能するソリューションですが、少し遅いです (注: フォーム デザイナで一度コントロールを初期化し、OcxState オブジェクトをアセンブリ リソースにコピーする必要があります)。

// Create a ocx state object with the correct path
_Unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer();
((System.ComponentModel.ISupportInitialize)(_Unity)).BeginInit();
_Unity.OcxState = (AxHost.State)(Resources.Unity3DOcx);
_Unity.TabIndex = 0;
Controls.Add(_Unity);
((System.ComponentModel.ISupportInitialize)(_Unity)).EndInit();
_Unity.src = _File;
AxHost.State state = _Unity.OcxState;
_Unity.Dispose();

// Create the unity web player object
_Unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer();
((System.ComponentModel.ISupportInitialize)(_Unity)).BeginInit();
this.SuspendLayout();
_Unity.Dock = DockStyle.Fill;
_Unity.Name = "Unity";
_Unity.OcxState = state;
_Unity.TabIndex = 0;
Controls.Add(_Unity);
((System.ComponentModel.ISupportInitialize)(_Unity)).EndInit();
this.ResumeLayout(false);
于 2012-01-20T09:31:28.667 に答える
2

ActiveX Unity Web プレーヤーの disableContextMenu プロパティにパラメータを設定する場合は、プログラムで IPropertyBag.Read メソッドを用意する必要があります。

disableContextMenu プロパティに「true」パラメーターを設定するサンプル C++ プログラム (Visual Studio 2010) を作成しました。http://www.nibiirosoft.com/download/UnityActiveXSample.zipを参照してください。

そして、そのコードを使用して、.unity3d ファイル ( http://www.nibiirosoft.com/Product/UniPlayer.html ) 用のプレーヤーを作成しました。

お役に立てば幸いです。

于 2012-07-23T17:52:43.393 に答える
0

dll " AxUnityWebPlayerAXLib" を逆コンパイルし、パラメータをコードに直接追加するとsrc、問題が解決します。

すべて正常に動作しますが、まだ " " に問題がありdisableContextMenuます。

于 2012-01-19T16:33:23.483 に答える