WWW其实很好用的。实测了,几百个的并发量毫无问题,相信,你的产品也没多少需要几百个的并发下载吧。
WWW说白了就是个Unity3D对http请求的一个封装,他支持GET和POST两种(借助于表单WWWForm实现POST),我这里只是简单的封装使用,没有做深入捣鼓,如果你深入捣鼓了WWW的HttpHead部分,欢迎你的共享。
先看一下使用示例:
下面是源码: PgResourceLoader 文件源码:
PgLoadState.cs 加载状态代码:
PgLoadException.cs:异常文件
WWW说白了就是个Unity3D对http请求的一个封装,他支持GET和POST两种(借助于表单WWWForm实现POST),我这里只是简单的封装使用,没有做深入捣鼓,如果你深入捣鼓了WWW的HttpHead部分,欢迎你的共享。
先看一下使用示例:
[C#]
纯文本查看
复制代码
{
m_buildScene = JsonMapper.ToObject<SceneStruct[]>(strObj);
}, ex =>
{
Debug.Log(ex);
});
|
下面是源码: PgResourceLoader 文件源码:
[C#]
纯文本查看
复制代码
public
class
PgResourceLoader : MonoBehaviour
{
#region 私有单例
/// <summary>
/// 实例
/// </summary>
private
static
PgResourceLoader g_instance;
/// <summary>
/// 锁,控制多线程冲突(传闻5是多线程)
/// </summary>
private
static
readonly
System.Object g_lock =
new
object
();
/// <summary>
/// 获取实例
/// </summary>
private
static
PgResourceLoader Instance
{
get
{
if
(g_instance ==
null
)
{
lock
(g_lock)
{
if
(g_instance ==
null
)
{
GameObject gObject =
new
GameObject();
gObject.name =
"Penguin_Resource_Loader"
;
g_instance = gObject.AddComponent<PgResourceLoader>();
}
}
}
return
g_instance;
}
}
#endregion
#region 静态公开方法
/// <summary>
/// 加载资源
/// </summary>
/// <param name="p_resourceName">资源名称</param>
/// <param name="p_form">表单信息</param>
/// <param name="p_completeCallBack">回调函数</param>
/// <param name="p_errorCallBack">异常回调函数</param>
/// <returns>加载的资源实例</returns>
public
static
void
Load<T>(
string
p_resourceName, WWWForm p_form =
null
, Action<T> p_completeCallBack =
null
, Action<PgLoadException> p_errorCallBack =
null
) where T :
class
{
PgResourceLoaderEnumerator<T>.Load(Instance, p_resourceName, p_form, p_completeCallBack, p_errorCallBack);
}
#endregion
}
|
PgLoadState.cs 加载状态代码:
[C#]
纯文本查看
复制代码
namespace
Penguin
{
/// <summary>
/// 加载状态
/// </summary>
enum
PgLoadState
{
/// <summary>
/// 空闲
/// </summary>
Idle,
/// <summary>
/// 加载中
/// </summary>
Loading,
/// <summary>
/// 加载成功
/// </summary>
Success,
/// <summary>
/// 发生异常
/// </summary>
Error,
/// <summary>
/// 加载结束
/// </summary>
Lastone
}
}
|
PgLoadException.cs:异常文件
[C#]
纯文本查看
复制代码
namespace
Penguin
{
public
class
PgLoadException : Exception
{
/// <summary>
/// 设置或获取WWW加载器
/// </summary>
public
WWW WWW {
set
;
get
; }
/// <summary>
/// 构造函数
/// </summary>
public
PgLoadException()
:
base
()
{
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="p_message">异常消息</param>
public
PgLoadException(
string
p_message)
:
base
(p_message)
//调用基类的构造器
{
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="p_message">异常消息</param>
/// <param name="p_innerException">异常</param>
public
PgLoadException(
string
p_message, Exception p_innerException)
:
base
(p_message, p_innerException)
//调用基类的构造器
{
}
}
}
|