【經驗分享】用Unity製作視覺化系統方案
Unity做視覺化無可厚非,特別是3D渲染這塊的,解決方案算是比較成熟的了。但如果你是那種各種表格資料的業務系統呢?
是不是覺得頭大,表格資料這塊根本不是Unity的強項,而且考慮到Unity可以用的UI庫,各種侷限。
網路上搜了一通,得出一個似乎可行的辦法:
Winform開發(至少資料表格這塊可以很輕鬆解決了),那麼3D展示這塊呢?使用DirectX,或者嵌入Unity3D的模組(當年的UnityWeb)。
用DirectX還能理解,但是用UnityWeb?一個已經停止維護的功能?還是舊版本。
於是取巧的方式,就是當需要渲染3D模組的時候又呼叫命令開啟一個Unity開發好的EXE,然後獲得視窗控制代碼控制視窗的顯示和層級。
我祭出當時用的解決方案:
https://github.com/U3DC/Unity-Winform-Solution
是不是很彆扭?
肯定啊~
那還有更好的解決方案麼?
必須有~
回過來說,我們必須根據當前人員的技能配備來考慮技術選型,不然專案很大可能陷入持久戰,週期越長,越可能走偏。
比如,團隊裡前端主力是Unity,搭配C#/C++服務端,和幾個美術(模型、UI)。
這完全就是遊戲向配置啊~
那怎麼走?
1.前端主要框架由Unity實現,這種偏業務的系統,比較重UI,選擇一個UI框架會讓這個事情更加流暢。
2.後端工作比較重頭了,所有的資料都在後端這邊跑,由前端(unity)發起請求,後端響應並反饋。
3.這是重點---> 前端實現時,把所有資料方面的圖顯示模組預留出來,這裡,我們使用網頁嵌入,選擇一個合適webview外掛,或者自己基於開源核心封裝也可以。
4.注意:業務層的東西比如圖示資料,在3D場景裡本質就叫2D的UI頁面。這樣就很好理解了吧,有了webview,我們就可以讓圖表那些更加的靈活。前端也不需要為實現那些圖表效果而掉光了頭髮。
5.前端資料依賴於後端,前端主要負責兩方面:一是3D方面的顯示與操作。二是業務資料的請求和響應顯示。而服務端則要處理資料的計算,還有圖表頁面的處理。
總結:
我們當時在做這個3D視覺化業務系統的時候,繞了大彎子。當然主要問題是侷限於如何用Unity做出需要的各種表格資料還有圖表(雷達圖、柱狀圖、趨勢圖)等等。其實完全可以換一種思路,就是讓這一塊獨立出來變成內嵌的模組。就像一開始說的那個方案:用winform內嵌unity3d的web模組。
當然,那個專案遠不止涉及到這個圖表的問題,還有接入海康、大華那些監控的實時流資料,並顯示在Unity的專案裡。這又涉及到RTMP協議的一些東西了。這些後續有時間再做分享吧。
有更好想法的朋友,也歡迎給我留言~