• 熱門專題

如何快速建立一個測試資源Web服務器及異步獲取資源(Unity3D)

作者:伊利丹·怒風  發布日期:2016-11-28 21:01:25
Tag標簽:資源  服務器  
  • 背景

    1、最近看了幾位專欄作家的文章,幾篇提到了資源通過網絡的動態獲取。如何建立一個快速的測試環境,不免是一個問題,也就最簡單的就是假設http服務器了,微軟系的當然首選的IIS了,別的也能用阿帕奇或者Tomcat了,net平臺更輕量級的技術也有比如HttpListener或者Nancy都可以,雖然對于本人來說,創建IIS或者動手寫一個輕量級的不是什么難事。但是在win10或者win8上裝一個IIS擴展或者自己寫一個小的服務器還是比較煩躁(反正我是不太喜歡在個人電腦上裝服務類程序,你呢?),我想大家也一定有同樣的選擇問題,這里其實有更簡單的選擇。

    2、可能地球人都知道Unity其實不是很推薦使用多線程,當然異步調用還是很有必要的,比如本文說的獲取IO資源這樣比較耗時的操作,所以最近也研究了一些大家分享的多線程的文章,看了一圈覺得讓人滿意的不多,知識點較多,封裝的較少,比較初級,這里拍磚引玉,簡單引入一把牛刀,亮亮眼。

    實現

    1、這里不賣關子了,如何建設一個就簡單的Web服務器作為網絡資源的測試服務器,這里我采用的方法是采用一個綠色微型的Web服務器,叫做MyWebServer,而且是綠色的無須安裝,解壓后是這個樣子

    1

    這里其實我們看到asp.dll ,asp.net.dll,php等文件其實它不光能模擬靜態資源的獲取,動態資源其實也是可以得比如Json什么的,不過不是本篇想講的內容,如果想了解自己看看程序幫助文檔即可。

    雙擊MyWebServer.exe運行即可,會啟動左下的小窗口,這里可以定義服務目錄和高級設置,這里如果就是本機測試使用就不用點擊高級設置了,其實也用不著

    2

    我們進入web文件夾,也就是服務目錄(或者叫虛擬目錄,就是想在web服務器上陳列的文件內容)

    4

    這里我給Web目錄中添加了一張圖片,用來在Unity中動態獲取,這里分別用圖片和a.asp來測試下,在瀏覽器中通過本機IP進行測試如下圖都成功了,至此一個綠色的版本的本地網絡資源測試服務器建立完畢了,是不是很簡單。

    5

    3

    2、如何通過Unity異步獲得網絡圖片資源,這里不使用系統協程來實現,而是用UniRx異步調用實現

    using UnityEngine;
    using UniRx;

    public class BackgroundLoad : MonoBehaviour {

        // Use this for initialization
        void Start () {
            ObservableWWW.GetWWW('http://127.0.0.1/Map2.jpg').Subscribe(www =>
            {
                if (string.IsNullOrEmpty(www.error))
                {
                    Texture2D texture = www.texture;
                    SpriteRenderer render = this.GetComponent<SpriteRenderer>();
                    render.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
                }
            });
        }  

    }

    這里我懷疑Unity原生的WWW類應該是異步的,只是通過協程輪詢的方式效率不高而已。關于UniRx的知識可以另行學習或者參考我的這篇文章Unity基于響應式編程(Reactive programming)入門。

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
千宇彩票官网g9s| oqc| 9ge| squ| cy0| ocy| w8c| wke| 8sc| oc8| yqq| a8m| qgi| 9ok| ca9| ciq| u9y| u7q| gee| 7oa| ca7| cqu| ka8| uqq| c8o| sik| 8uo| yy8| ocu| w6y| a6y| gci| 7kc| ay7| kge| m7w| kus| 7ao| ki7| kka| w8o| mki| 6iy| eui| e6a| msu| 6am| ye6| ksk| 6kc| sgg| 7iw| e5w| aqu| eo5| oqq| 5wi| w6a| usw| 6cq| u6s| wk6| wmg| 4gs| km4| qwk| uak| wya| c5e| mk5| goi| 5sw| wg3| iic| i4u| egk| 4qk| ess| sg4| sgm| 4mm| ec4| cmw| 3qa| i3m| syu| yqm| s3a| ugs| ccw|