如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
背景
1、最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取。如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或者Tomcat了,net平台更轻量级的技术也有比如HttpListener或者Nancy都可以,虽然对于本人来说,创建IIS或者动手写一个轻量级的不是什么难事。但是在win10或者win8上装一个IIS扩展或者自己写一个小的服务器还是比较烦躁(反正我是不太喜欢在个人电脑上装服务类程序,你呢?),我想大家也一定有同样的选择问题,这里其实有更简单的选择。
2、可能地球人都知道Unity其实不是很推荐使用多线程,当然异步调用还是很有必要的,比如本文说的获取IO资源这样比较耗时的操作,所以最近也研究了一些大家分享的多线程的文章,看了一圈觉得让人满意的不多,知识点较多,封装的较少,比较初级,这里拍砖引玉,简单引入一把牛刀,亮亮眼。
实现
1、这里不卖关子了,如何建设一个就简单的Web服务器作为网络资源的测试服务器,这里我采用的方法是采用一个绿色微型的Web服务器,叫做MyWebServer,而且是绿色的无须安装,解压后是这个样子

这里其实我们看到asp.dll ,asp.net.dll,php等文件其实它不光能模拟静态资源的获取,动态资源其实也是可以得比如Json什么的,不过不是本篇想讲的内容,如果想了解自己看看程序帮助文档即可。
双击MyWebServer.exe运行即可,会启动左下的小窗口,这里可以定义服务目录和高级设置,这里如果就是本机测试使用就不用点击高级设置了,其实也用不着

我们进入web文件夹,也就是服务目录(或者叫虚拟目录,就是想在web服务器上陈列的文件内容)

这里我给Web目录中添加了一张图片,用来在Unity中动态获取,这里分别用图片和a.asp来测试下,在浏览器中通过本机IP进行测试如下图都成功了,至此一个绿色的版本的本地网络资源测试服务器建立完毕了,是不是很简单。


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)入门。
如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)的更多相关文章
- Socket 初识 用Socket建立一个简易Web服务器
摘自<Asp.Net 本质论>作者:郝冠军 //在.Net中.system.Net命名空间提供了网络编程的大多数数据据类型以及常用操作,其中常用的类型如下: /* IPAddress 类表 ...
- 快速建立一个Django项目
快速建立一个Django项目 版本说明 一定要先明确好使用的Python版本和所使用包的版本,避免耽误不要的时间 Python==3.6.4 Django==1.11.9 djangoresframe ...
- 【JSP】让HTML和JSP页面不缓存从Web服务器上重新获取页面
用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面——在Session销毁后(用户退出)受保护的JSP页重新在浏览器中显示出来. 然而,如果用户点击返回页面上的任何链接,We ...
- 让HTML和JSP页面不缓存从Web服务器上重新获取页面
感谢原文作者:佚名 原文链接:https://www.jb51.net/web/100639.html 问题描述 用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面--在Se ...
- 理解与模拟一个简单web服务器
先简单说下几个概念,根据自己的理解,不正确请见谅. web服务器 首先要知道什么是web服务器,简单说web服务器就是可以使用HTTP传输协议与客户端进行通信的服务器.最初的web服务器只能用来处理静 ...
- 写一个简易web服务器、ASP.NET核心知识(4)--转载
第一次尝试(V1.0) 1.理论支持 这里主要要说的关于Socket方面的.主要是一个例子,关于Socket如何建立服务端程序的简单的代码. static void Main(string[] arg ...
- siimpleHttpServer 快速建立一个文件服务器
利用 SimpleHTTPServer 可以非常快速的建立一个http服务器,如果有同学在做共享文件时遇到了困难,只需要一行代码,即可建站完成. 在想要映射的文件夹目录内,执行命令行 python - ...
- 写一个简易web服务器、ASP.NET核心知识(4)
前言 昨天尝试了,基于对http协议的探究,我们用控制台写了一个简单的浏览器.尽管浏览器很low,但是对于http协议有个更好的理解. 说了上面这一段,诸位猜到我要干嘛了吗?(其实不用猜哈,标题里都有 ...
- 自己实现一个简易web服务器
一个web服务器是网络应用中最基础的环节. 构建需要理解三个内容: 1.http协议 2.socket类 3.服务端实现原理 1.1 HTTP http请求 一般一个http请求包括以下三个部分: 1 ...
随机推荐
- 【noiOJ】p7914(..)
08:不重复地输出数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入n个数,从小到大将它们输出,重复的数只输出一次.保证不同的数不超过500个. 输入 ...
- 51nod百度之星2016练习赛
今天看了看51nod发现有这样一个练习赛,就做了做.因为实力太弱想不出E题,各位神犇勿D. (5.26UPD:E题想粗来了) A 区间交 不难发现若干线段[li,ri]的交就是[max(li),min ...
- dubbo源码学习(一)之ExtensionLoader
[转载请注明作者和原文链接,欢迎讨论,相互学习.] 一.前言 ExtensionLoader类,主要是根据扩展点名称来对扩展点接口实现进行的一系列操作,如果获取扩展点接口实现实例.适配类实例.更新实现 ...
- javascrit2.0完全参考手册(第二版) 第2章第3节 变量
变量存储数据.每个变量都有一个名字,叫做标识符.在js中声明变量使用var关键字,var为新的数据分配存储空间,或者指示一直标识符正在使用.声明变量非常简单: var x; 这个语句告诉解释器一个新的 ...
- 1022. D进制的A+B (20)
1022. D进制的A+B (20) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 输入两个非负10进制整数A和 ...
- pdf转word
一.刚需 pdf转word,这个需求肯定是有的.但是大家都知道,pdf是用来排版打印的,所以编辑起来会比较麻烦,所以,大家都会尝试将pdf的内容转成word,然后再进行编辑. 二.方法 1.用offi ...
- Android 图片轮播(最简单的)
布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android ...
- visual studio 2012 的制作ActiveX、打包和发布[转]
开发环境是Vs 2012 Framework 4.0 源地址:http://www.cnblogs.com/li-peng/p/3455247.html 源码和制作工具在文章最下边 一. Activ ...
- jquery ui dialog去掉右上角的叉号
var dialog = $("#id").dialog({ resizable:false, height:, width:, zIndex:, modal:true, open ...
- c++之vector
vector是STL中最常见的容器,它是一种顺序容器,支持随机访问.vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似, 不同的地方就是:数组是静态分配空间,一旦分配了空间的大小, ...