WWW封装共享 [复制链接]

来源:互联网 发布:备案域名接入香港主机 编辑:程序博客网 时间:2024/05/20 07:50
WWW其实很好用的。实测了,几百个的并发量毫无问题,相信,你的产品也没多少需要几百个的并发下载吧。
        WWW说白了就是个Unity3D对http请求的一个封装,他支持GET和POST两种(借助于表单WWWForm实现POST),我这里只是简单的封装使用,没有做深入捣鼓,如果你深入捣鼓了WWW的HttpHead部分,欢迎你的共享。

        先看一下使用示例:
[C#] 纯文本查看 复制代码
?
PgResourceLoader.Load<string>("http://*********",null, strObj =>
{
    m_buildScene = JsonMapper.ToObject<SceneStruct[]>(strObj);
}, ex =>
{
    Debug.Log(ex);
});


          下面是源码:          PgResourceLoader 文件源码:
         
[C#] 纯文本查看 复制代码
?
publicclass PgResourceLoader : MonoBehaviour
{
    #region 私有单例
 
    /// <summary>
    /// 实例
    /// </summary>
    privatestatic PgResourceLoader g_instance;
    /// <summary>
    /// 锁,控制多线程冲突(传闻5是多线程)
    /// </summary>
    privatestatic readonly System.Object g_lock = newobject();
    /// <summary>
    /// 获取实例
    /// </summary>
    privatestatic PgResourceLoader Instance
    {
        get
        {
            if(g_instance == null)
            {
                lock(g_lock)
                {
                    if(g_instance == null)
                    {
                        GameObject gObject = newGameObject();
                        gObject.name = "Penguin_Resource_Loader";
                        g_instance = gObject.AddComponent<PgResourceLoader>();
                    }
                }
            }
            returng_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>
    publicstatic void Load<T>(stringp_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#] 纯文本查看 复制代码
?
namespacePenguin
{
    /// <summary>
    /// 加载状态
    /// </summary>
    enumPgLoadState
    {
        /// <summary>
        /// 空闲
        /// </summary>
        Idle,
        /// <summary>
        /// 加载中
        /// </summary>
        Loading,
        /// <summary>
        /// 加载成功
        /// </summary>
        Success,
        /// <summary>
        /// 发生异常
        /// </summary>
        Error,
        /// <summary>
        /// 加载结束
        /// </summary>
        Lastone
    }
}

PgLoadException.cs:异常文件
[C#] 纯文本查看 复制代码
?
namespacePenguin
{
    publicclass PgLoadException : Exception
    {
        /// <summary>
        /// 设置或获取WWW加载器
        /// </summary>
        publicWWW WWW { set;get; }
 
        /// <summary>
        /// 构造函数
        /// </summary>
        publicPgLoadException()
            :base()
        {
 
        }
 
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="p_message">异常消息</param>
        publicPgLoadException(stringp_message)
            :base(p_message)//调用基类的构造器
        {
        }
 
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="p_message">异常消息</param>
        /// <param name="p_innerException">异常</param>
        publicPgLoadException(stringp_message, Exception p_innerException)
            :base(p_message, p_innerException)//调用基类的构造器
        {
 
        }
    }
}





0 0
原创粉丝点击