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

背景

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

二、可能地球人都知道Unity其實不是很推薦使用多線程,固然異步調用仍是頗有必要的,好比本文說的獲取IO資源這樣比較耗時的操做,因此最近也研究了一些你們分享的多線程的文章,看了一圈以爲讓人滿意的很少,知識點較多,封裝的較少,比較初級,這裏拍磚引玉,簡單引入一把牛刀,亮亮眼。html

實現

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

1

這裏其實咱們看到asp.dll ,asp.net.dll,php等文件其實它不光能模擬靜態資源的獲取,動態資源其實也是能夠得好比Json什麼的,不過不是本篇想講的內容,若是想了解本身看看程序幫助文檔便可。編程

雙擊MyWebServer.exe運行便可,會啓動左下的小窗口,這裏能夠定義服務目錄和高級設置,這裏若是就是本機測試使用就不用點擊高級設置了,其實也用不着瀏覽器

2

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

4

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

5

3

二、如何經過Unity異步得到網絡圖片資源,這裏不使用系統協程來實現,而是用UniRx異步調用實現多線程

using UnityEngine;
using UniRx;asp.net

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)入門

相關文章
相關標籤/搜索