如何快速建立一个测试资源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 ...
随机推荐
- 如何伪装成为一名前端(JS方向)
作为一个菜鸟级别的.NET开发者,在连服务器都没搞定的情况下,要研究前端,这是在扯淡,不过,迫于工作的需要,时常需要去前端打杂,所以经常伪装成为一名前端,有时候竟产生错觉,去应聘Y一份前端work吧. ...
- 【BZOJ】2741: 【FOTILE模拟赛】L
题意:给定一个长度为n的序列,m次询问,每次询问一个区间[l, r],求max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r.(n< ...
- Android --ToggleButton的使用
1. 效果图
- jquery 最简单的动画效果
<p style="border: 1px solid red"> 我会慢慢变大 </p> <a>dianji</a> <sc ...
- dubbo源码学习(一)之ExtensionLoader
[转载请注明作者和原文链接,欢迎讨论,相互学习.] 一.前言 ExtensionLoader类,主要是根据扩展点名称来对扩展点接口实现进行的一系列操作,如果获取扩展点接口实现实例.适配类实例.更新实现 ...
- Java_Java Compiler 应用实例
转自:http://hejiangtao.iteye.com/blog/1399122 一直在用JDK1.5, 一直搞不清楚JDK1.6有啥特性, 就翻了翻, 发现这个Compiler API(JSR ...
- js在输出时乱码
如果网页头是<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ...
- Xilinx SDK Problem Solution in Ubuntu
Problem1: Documention and Example can't open, Xilinx SDK Ubuntu. Step1: Click the Document link o ...
- td内容过长,省略号表示
.word{ min-width:100px; max-width:200px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis ...
- 高德地图 室内地图 API 的一些坑
开发指南 http://lbs.amap.com/api/javascript-api/guide/create-map/indoormap/ demo 大全: http://lbs.amap.com ...