Unity3D嵌入WPF教程

2022-09-10 23:57:23 字數 3256 閱讀 5538

建立乙個 類庫工程

新增 windowform 使用者控制項 (usercontrol)

1).引入 untiywebplayer com 元件

在工具-》選擇工具箱中找到unitywebplayer.dll並新增;

2)在使用者控制項中新增unitywedplayer控制項(在工具箱中直接拖拉即可)

2).將 這個元件拖到 usercontrol 裡, 並將 dock屬性設定為 fill 讓它充滿整個控制項

3)之後刪除untiywebplayer,生成檔案

4)編寫使用者控制項的後台**以便載入地圖

using system;

using system.collections.generic;

using system.componentmodel;

using system.drawing;

using system.data;

using system.linq;

using system.text;

using system.windows.forms;

namespace u3ddisplaycontrol

public void loadscence(string src)

);"autoupdateurl", bindingflags.instance | bindingflags.setproperty, null, this.axplayer.getocx(), new object );

//this.axplayer.src = src;

axhost.state ocxstate = this.axplayer.ocxstate;//獲取或設定 activex 控制項的持久狀態。返回結果:system.windows.forms.axhost.state,表示 activex 控制項的持久狀態。

axplayer.isaccessible = false;

this.axplayer.dispose();

this.axplayer = new u3dplayer();

this.axplayer.begininit();

this.axplayer.ocxstate = ocxstate;

this.axplayer.dock = dockstyle.fill;

base.controls.add(this.axplayer);

+= new axunitywebplayeraxlib._dunitywebplayeraxevents_onexternalcalleventhandler(axplayer_onexternalcall);}}

public delegate void onreceivemessageeventhandler(object sender, string functionname, string args);

public event onreceivemessageeventhandler onreceivemessage;//用於wpf接受unity3d的資訊

private void axplayer_onexternalcall(object sender, axunitywebplayeraxlib._dunitywebplayeraxevents_onexternalcallevent e)

}public void sendmessagetoobject(string obj, string method, object val)//用於wpf向unity3d傳送資訊

public void sendmessagetoobject(object val)

public void clear()}}

}

4).在程式中新增乙個類對 unitywebplayer 的public引用. 這樣做的目的是,之後可以對其進行操作,(也可不新增)

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.windows.forms;

namespace u3ddisplaycontrol

return base.preprocessmessage(ref msg);// 如果訊息已由控制項處理,則為 true;否則為 false。}}

}

4).生成 , 在 bin 中會有三個 dll 檔案 , 只有兩個有用 . 乙個是 axinterop.unitywebplayeraxlib 另乙個是 你定義的那個自定義元件的 dll.

將那兩個有用的 dll 引入到我們的 wpf 工程中. 並且 再引入      system.windows.forms 及 windowsformintegration.

在 wpf 的xaml的 window 標籤中 引入我們的 自定義控制項的命名空間. 如: xmlns:unity="..."  在 中, 加入乙個 標籤,用來承載我們的 windowsform 的自定義元件. 並在其中 加入 如: . 這樣, 就將unitywebplayer 嵌入了 wpf中.

出現問題可能是元件沒有載入上去,

Unity3d嵌入web網頁

假如我想替換某個背景圖,一般來說需要從新打包上架,或者使用熱跟新。但是web的話只需要在伺服器後台換張即可 1,用win api在unity視窗嵌入web網頁 3,在web和unity之間建立通訊,實現資料傳輸 為什麼要通訊?因為是兩個視窗嵌入在一起的,不同的程式域,unity和web不能直接訪問 ...

Unity3D教程之Light光源

燈光用來照亮場景和物件,可以創造完美的視覺氣氛。燈光可以用來模擬太陽 燃燒的火柴 探照燈 手電筒 槍火光 等等。我們通過在hierarchy面板 create light來建立4種不同的燈光效果。如圖1 10所示。四種型別的燈光 directional light平行光 方向光 最省資源 可以改變角...

著色器 unity3d教程

unity3d教程手冊 如下圖所示,在project面板中新建乙個new material.這樣子就準備好了乙個空白的著色器。它能支援的型別也就在shader中全部顯示出來。不得不說,很好很強大。所有這些pixel 畫素 著色器,預設的diffuse算是資源開銷較小的渲染選擇。隨後那些帶有凹凸貼圖的...