2013-07-10 13:21:24 AWNUXCVBN 阅读数 4935
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    345 人正在学习 去看看 伍晓波
2016-10-20 14:11:14 u012322710 阅读数 7320
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    345 人正在学习 去看看 伍晓波

原创


Best HTTP (Pro)  这是一款很多公司都在用的网页插件,感觉确实不错,分Pro版本和普通版本,下载地址:http://www.manew.com/thread-96247-1-1.html

需要你对http短连接有一定的了解。废话不多说啊,开搞!


因为自己找教程的时候,就找到一篇文章,还写的不多,本来想写的细一点,把大部分功能都写一下,还蛮多的,有点偷懒,上传流文件,下载上传进度其实插件的PDF都有,看一下就差不多,我这只是抛砖引玉。


using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

//需要的命名空间
using BestHTTP;
using BestHTTP.Statistics; 
using BestHTTP.Cookies;
using System;
using System.IO; 



public class bestHttpDemo : MonoBehaviour {

    public RawImage image;
    public Text showResponse;


    //Get请求   不写HTTPMethods.Get默认也是Get
    public void OnGetRequest()
    {
        HTTPRequest request = new HTTPRequest(new Uri("https://www.baidu.com/"), HTTPMethods.Get, OnRequestFinished);
        request.Send();
    }


    //请求回调   request请求  response响应  这两个参数必须要有 委托类型是OnRequestFinishedDelegate
    void OnRequestFinished(HTTPRequest request, HTTPResponse response)
    {
        showResponse.text = "响应:" + response.DataAsText;
    }


    //下载图片 
    public void OnLoadImage()
    {

        //Lambda表达式,下载直接回调,简便写法。  
        new HTTPRequest(new Uri("http://img.manew.com/data/attachment/forum/201610/19/155755pbw4tt22zznczohh.png"), (request, response) =>
        {

            image.texture = response.DataAsTexture2D;
            
            //保存图片
            try
            {

                if (Application.platform == RuntimePlatform.Android)
                {  
                    //在PlayerSetting里修改 WriteAccess写入入口为外部SDCard   (这里还有问题,安卓里没存上,还没搞懂为什么)
                    //Application.persistentDataPath  在安卓上  /mnt/sdcard/Android/data/com.zou.chongyang/files  
                    File.WriteAllBytes("jar:file://" + Application.persistentDataPath + "/MyImage.png", response.Data);
                }
                else
                {
                    File.WriteAllBytes(Application.dataPath + "/MyImage.png", response.Data);
                }

            }
            catch (IOException e)
            {
                print(e);
            }  

        }).Send();

    }
    
    /*
    //最好自己去看BestHTTPDocumentationEN.pdf文档,功能蛮多的。
    //BestHttp更多API  还蛮多的,懒得弄到UI上显示,自己拿着用吧。
    public void BestHttpAPI()
    {
        GeneralStatistics stats = HTTPManager.GetGeneralStatistics(StatisticsQueryFlags.All); //获取统计信息,统计类型全部

        BestHTTP.Caching.HTTPCacheService.IsSupported        //是否支持缓存(只读)
        stats.CacheEntityCount.ToString();                   //缓存对象个数
        stats.CacheSize.ToString("N0");                      //缓存总大小
        BestHTTP.Caching.HTTPCacheService.BeginClear();      //清空缓存
       
        BestHTTP.Cookies.CookieJar.IsSavingSupported        //是否支持保存Cookie(只读)
        stats.CookieCount.ToString();                       //Cookie个数
        stats.CookieJarSize.ToString("N0");                 //Cookie总大小
        BestHTTP.Cookies.CookieJar.Clear();                 //清空Cookie
     
        HTTPManager.GetRootCacheFolder()                    //获取缓存和Cookies目录路径

        stats.Connections.ToString();                       //Http连接数
        stats.ActiveConnections.ToString();                 //激活的Http连接数
        stats.FreeConnections.ToString();                   //空闲的Http连接数
        stats.RecycledConnections.ToString();               //回收的Http连接数
        stats.RequestsInQueue.ToString();                   //Request请求在队列的数量

        BestHTTP.HTTPManager.OnQuit();                      //退出统计
     
     
        //缓存维护  缓存最大1mb,   删除2天前的缓存
        BestHTTP.Caching.HTTPCacheService.BeginMaintainence(new BestHTTP.Caching.HTTPCacheMaintananceParams( TimeSpan.FromDays(2),1 *1024*1024 ));
        
        //Cookie维护  删除7天前的Cookie并保持在最大允许大小内。
        BestHTTP.Cookies.CookieJar.Maintain();
     
        //获取Cookie集合
        List<Cookie> cookie = CookieJar.Get(new Uri("https://www.baidu.com/"));
        //Cookie的API很多
        cookie[0].Name
        cookie[0].Domain 
        cookie[0].Value
    }
    */
}


Cookie介绍: https://my.oschina.net/jihan19921016/blog/506473

总结:不错,很好用!

2013-01-23 10:47:56 linken2 阅读数 1553
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    345 人正在学习 去看看 伍晓波

为了让中国用户以最快的速度下载并使用Unity Web Player插件,从而运行使用Unity引擎开发的网页游戏和应用,Unity公司已经与中国的CDN网络提供商ChinaCache达成了深度的合作协议,允许中国用户通过ChinaCache来下载Unity Web Player的插件、播放器以及升级包。以下是具体的使用方法。
    为了确保中国用户从ChinaCache下载相关资源,网页游戏开发商需要自行修改自己的html文件,使其包含以下内容:

 

  1. <script type="text/javascript" src="http://wp-china.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js"</script>
  2. <script type="text/javascript">
  3. <!--
  4. function GetUnity() {
  5. if (typeof unityObject != "undefined") {
  6.   return unityObject.getObjectById("unityPlayer");
  7. }
  8. return null;
  9. }
  10. if (typeof unityObject != "undefined") {
  11. var params = {
  12.   autoupdateURL : "http://wp-china.unity3d.com/autodownload_webplugin-3.x",
  13.   autoupdateURLSignature : "02a5f78b3066d7d31fb063186a2eec36fdf1205d49c6b0808eb37ef85ed9902e2e1904d87f599238a802ba0abbfe4f18aa82dd2eb5171e99ba839a5cea9e6ea9c1be9eae505937b56fe4a5fd254cffe08958d961f42d970136b5eab9e6c2cd08b81bc8a11e5ade57dc63dcfef2248d89689e4d4feed3cdfe7374c848fd57ebd4"
  14. };
  15.   
  16. unityObject.setBaseDownloadUrl(http://wp-china.unity3d.com/download_webplayer-3.x/);
  17. unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 600, 450, params);
  18. }
  19. -->
  20. </script>
  21. <body>
  22. ...
  23. <a href=http://unity3d.com/webplayer/ title="Unity Web Player. Install now!">
  24. <img alt="Unity Web Player. Install now!" src=http://wp-china.unity3d.com/installation/getunity.png width="193" height="63" />
  25. </a>
  26. ...
  27. </body>

在以上脚本中,特别需要强调的是从wp-china.unity3d.com中下载的UnityObject.js文件,该文件需要传入autoupdateURL/autoupdateURLSignature两个参数;同时还需设置好基础的下载地址(setBaseDownloadUrl),从而保证UnityObject中用到的任何文件(例如图像文件)也都会从wp-china.unity3d.com进行下载同时,embedUnity函数中需要传入params参数。在body中,getunity.png的下载地址也需要更改为ChinaCache地址。

2018-10-19 11:05:35 KiTok 阅读数 1680
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    345 人正在学习 去看看 伍晓波

Unity免费插件分享 UniWebView 3 3.8.0 Unity3D手机网页视图组件 最新版

UniWebView 包含一组 C# 的高层级 API,它对 iOS 和 Android 平台的本机 API 进行了抽象封装。使用 UniWebView,您可以在无需了解本机开发的任何内容的情况下,就将浏览器行为添加到游戏中。当您需要显示活动公告及通知,或为玩家排名添加排行板,或是向用户显示任何网页内容时,UniWebView 都可以帮助您轻松解决问题。

UniWebView 支持 在iOS 9.0 或更高版本,以及 Android 5.0 (API Level 21) 或更高版本。它还包含在 macOS 上的 Unity Editor 的完整功能支持。

功能

  • 网络浏览

  • 载入本地 HTML 文件

  • JavaScript 完整支持

  • 基于 url scheme 的消息系统

  • 通过绝对值或引用 Unity UI 元素的相对值来设置位置和大小

  • 播放 YouTube,Vimeo 或本地视频

  • 获取照片和上传

下载方式

  1. CSDN资源下载。[暂时不提供]
  2. 免费下载,往下翻。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



这里写图片描述

Hello ,I am 李本心明


首先谢谢大家的支持,其次如果你碰到什么其他问题的话,欢迎来 我自己的一个 讨论群559666429来(扫扫下面二维码或者点击群链接 Unity3D[ 交流&副业]CLUB ),大家一起找答案,共同进步 同时欢迎各大需求商入住,发布自己的需求,给群内伙伴提供副职,赚取外快。对了,资源的话,要在群公告里面找。

由于工作生活太忙了,对于大家的帮助时间已经没有之前那么充裕了。如果有志同道合的朋友,可以接受无偿的帮助别人,可以单独联系我,一块经营一下。
如果你有更好的经营方式也来练习我,加我QQ

在这里插入图片描述


2018-02-27 23:44:44 ChinarCSDN 阅读数 1658
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    345 人正在学习 去看看 伍晓波

Unity3D插件-简化代码、封装功能


本文提供全流程,中文翻译。

Chinar坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)




1

FindT() —— 找任意脚本 / 组件


FindT —— <泛型>(名字)返回:泛型

用法:

using UnityEngine; —— 引用命名空间

Chinar.FindT< GameObject >(物体名) 就能直接找到物体,返回一个 GameObject 类型

Chinar.FindT< Button >(物体名) 就能直接找到物体,返回一个 Button 类型

传入类型是什么,就返回什么类型
举个栗子黑白88

using UnityEngine;//引用命名空间


/// <summary>
/// 自定义类(囊括所有自定义静态方法)—— 可用于简化代码 //无需继承MonoBehaviour
/// </summary>
public class Chinar
{
    /// <summary>
    /// 获取物体名下的 T 组件
    /// </summary>
    /// <param name="namestring">物体名</param>
    /// <returns></returns>
    public static T FindT<T>(string namestring)
    {
        return GameObject.Find(namestring).GetComponent<T>();
    }
}

2

Write/ReadJson —— 读写Json


using System.IO; —— 引用命名空间

Chinar.WriteJson(路径, 给文件起个名字, 写入的内容)
即可在目标路径直接写一个Json文件

Chinar.ReadJson(路径, 读取的文件名)
即可在目标路径直接读取一个Json文件,并返回一个 String 类型
举个栗子黑白88

using System.IO;//引用命名空间



/// <summary>
/// 自定义类(囊括所有自定义静态方法)—— 可用于简化代码 //无需继承MonoBehaviour
/// </summary>
public class Chinar
{


    /// <summary>
    /// 写入JSON文件
    /// </summary>
    /// <param name="path">路径</param>
    /// <param name="name">文件名</param>
    /// <param name="info">信息</param>
    public static void WriteJson(string path, string name, string info)
    {
        StreamWriter streamWriter;                               //声明一个流写入对象
        FileInfo     fileInfo = new FileInfo(path + "/" + name); //文件 写到哪里:叫什么
        streamWriter          = fileInfo.CreateText();           //打开文件往里写文本
        streamWriter.WriteLine(info);                            //写入信息 fileInfo streamWriter
        streamWriter.Close();
        streamWriter.Dispose(); //双关,写完
    }


    /// <summary>
    /// 读取JSON文件
    /// </summary>
    /// <param name="path">路径</param>
    /// <param name="name">文件名</param>
    /// <returns>string </returns>
    public static string ReadJson(string path, string name)
    {
        StreamReader streamReader;                               //声明一个流读取对象
        FileInfo     fileInfo = new FileInfo(path + "/" + name); //文件 文件路径信息:叫什么
        streamReader          = fileInfo.OpenText();             //打开文件往里写文本
        string info           = streamReader.ReadToEnd();        //读信息 streamReader 给 info
        streamReader.Close();
        streamReader.Dispose(); //双关,写完
        return info;
    }
}

3

IsExist —— 判断文件是否存在


using System.IO; —— 引用命名空间

Chinar.IsExist( 文件名 )
即可判断在目标路径上这个名字的文件,是否存在。并返回一个 bool 类型

举个栗子黑白88

using System.IO;//引用命名空间



/// <summary>
/// 自定义类(囊括所有自定义静态方法)—— 可用于简化代码 //无需继承MonoBehaviour
/// </summary>
public class Chinar
{
    /// <summary>
    /// 文件是否存在
    /// </summary>
    /// <param name="filename">文件名</param>
    public static bool IsExists(string filename)
    {
        bool     isExists;                                                                 //声明一个布尔值,默认为false
        FileInfo fileInfo = new FileInfo(Application.persistentDataPath + "/" + filename); //判断路径
        //DirectoryInfo myDirectoryInfo=new DirectoryInfo(fileInfo.ToString()); //目录
        if (fileInfo.Exists == false) //路径不存在
        {
            isExists = false;
        }
        else
        {
            isExists = true;
        }
        return isExists; //返回bool值给函数 IsExist
    }
}

4

RandomColor() —— 随机颜色


RandomColor() —— 返回:颜色

举个栗子黑白88

using UnityEngine;//引用命名空间


/// <summary>
/// 自定义类(囊括所有自定义静态方法)—— 可用于简化代码 //无需继承MonoBehaviour
/// </summary>
public class Chinar
{
    /// <summary>
    /// 随机颜色
    /// </summary>
    /// <returns> Color </returns>
    public Color RandomColor()
    {
        float r     = Random.Range(0f, 1f);
        float g     = Random.Range(0f, 1f);
        float b     = Random.Range(0f, 1f);
        Color color = new Color(r, g, b);
        return color;
    }
}

4

Generalities —— 总类


Chinar. —— 可在任何脚本中调用其类中写好的函数

举个栗子黑白88

using System;                         //记得引用命名空间
using System.IO;                      //记得引用命名空间
using System.Text.RegularExpressions; //记得引用命名空间
using DG.Tweening;                    //记得引用命名空间
using UnityEngine;                    //记得引用命名空间
using UnityEngine.UI;                 //记得引用命名空间


/// <summary>
/// 自定义类(囊括所有自定义静态方法)—— 可用于简化代码 //无需继承MonoBehaviour
/// </summary>
public class Chinar
{
    /// <summary>
    /// 获取物体名下的 T 组件
    /// </summary>
    /// <param name="namestring">物体名</param>
    /// <returns></returns>
    public static T FindT<T>(string namestring)
    {
        return GameObject.Find(namestring).GetComponent<T>();
    }


    /// <summary>
    /// 写入JSON文件
    /// </summary>
    /// <param name="path">路径</param>
    /// <param name="name">文件名</param>
    /// <param name="info">信息</param>
    public static void WriteJson(string path, string name, string info)
    {
        StreamWriter streamWriter;                               //声明一个流写入对象
        FileInfo     fileInfo = new FileInfo(path + "/" + name); //文件 写到哪里:叫什么
        streamWriter          = fileInfo.CreateText();           //打开文件往里写文本
        streamWriter.WriteLine(info);                            //写入信息 fileInfo streamWriter
        streamWriter.Close();
        streamWriter.Dispose(); //双关,写完
    }


    /// <summary>
    /// 读取JSON文件
    /// </summary>
    /// <param name="path">路径</param>
    /// <param name="name">文件名</param>
    /// <returns></returns>
    public static string ReadJson(string path, string name)
    {
        StreamReader streamReader;                               //声明一个流读取对象
        FileInfo     fileInfo = new FileInfo(path + "/" + name); //文件 文件路径信息:叫什么
        streamReader          = fileInfo.OpenText();             //打开文件往里写文本
        string info           = streamReader.ReadToEnd();        //读信息 streamReader 给 info
        streamReader.Close();
        streamReader.Dispose(); //双关,写完
        return info;
    }


#if UNITY_ANDROID
    /// <summary>
    /// 提示信息
    /// </summary>
    /// <param name="text">Text.</param>
    /// <param name="activity">Activity.</param>
    public static void ShowToast(string text, AndroidJavaObject activity = null)
    {
        Debug.Log(text);
        if (activity == null)
        {
            AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            activity                     = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        }

        AndroidJavaClass  Toast   = new AndroidJavaClass("android.widget.Toast");
        AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
        activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
            {
                AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", text);
                Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString,
                    Toast.GetStatic<int>("LENGTH_SHORT")).Call("show");
            }
        ));
    }

    public static AndroidJavaObject ToJavaString(string CSharpString)
    {
        return new AndroidJavaObject("java.lang.String", CSharpString);
    }
#endif

    /// <summary>
    /// 正则表达式:Unicode转换中文
    /// </summary>
    /// <param name="unicode"></param>
    /// <returns></returns>
    public static string UnicodeToString(string unicode)
    {
        Regex regex = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
        return regex.Replace(unicode,
            delegate(Match m) { return ((char) Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
    }


    /// <summary>
    /// 获取Button组件
    /// </summary>
    /// <param name="namestring"></param>
    /// <returns></returns>
    public static Button FindButton(string namestring)
    {
        return GameObject.Find(namestring).GetComponent<Button>();
    }

    /// <summary>
    /// 获取DoTween插件中的DoTweenAnimation组件
    /// </summary>
    /// <param name="namestring"></param>
    /// <returns></returns>
    public static DOTweenAnimation FindDoTweenAnimation(string namestring)
    {
        return GameObject.Find(namestring).GetComponent<DOTweenAnimation>();
    }


    /// <summary>
    /// 文件是否存在
    /// </summary>
    /// <param name="filename">文件名</param>
    public static bool IsExists(string filename)
    {
        bool     isExists;                                                                 //声明一个布尔值,默认为false
        FileInfo fileInfo = new FileInfo(Application.persistentDataPath + "/" + filename); //判断路径
        //DirectoryInfo myDirectoryInfo=new DirectoryInfo(fileInfo.ToString()); //目录
        if (fileInfo.Exists == false) //路径不存在
        {
            isExists = false;
        }
        else
        {
            isExists = true;
        }

        return isExists; //返回bool值给函数 IsExist
    }


    /// <summary>
    /// 随机颜色
    /// </summary>
    /// <returns> Color </returns>
    public Color RandomColor()
    {
        float r     = Random.Range(0f, 1f);
        float g     = Random.Range(0f, 1f);
        float b     = Random.Range(0f, 1f);
        Color color = new Color(r, g, b);
        return color;
    }
}

逐步完善中….





Chinar


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

unity3d网页加载

阅读数 430

没有更多推荐了,返回首页