Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)
2018-02-27 23:44
525 查看
Unity3D插件-简化代码、封装功能
1
FindT() —— 找任意脚本 / 组件
2
Write/ReadJson —— 读写Json
3
IsExist —— 判断文件是否存在
4
RandomColor() —— 随机颜色
4
Generalities —— 总类
用法:
using UnityEngine; —— 引用命名空间
Chinar.FindT< GameObject >(物体名) 就能直接找到物体,返回一个 GameObject 类型
Chinar.FindT< Button >(物体名) 就能直接找到物体,返回一个 Button 类型
传入类型是什么,就返回什么类型
Chinar.WriteJson(路径, 给文件起个名字, 写入的内容)
即可在目标路径直接写一个Json文件
Chinar.ReadJson(路径, 读取的文件名)
即可在目标路径直接读取一个Json文件,并返回一个 String 类型
Chinar.IsExist( 文件名 )
即可判断在目标路径上这个名字的文件,是否存在。并返回一个 bool 类型
逐步完善中….
Chinar
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
本文提供全流程,中文翻译。 Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
FindT() —— 找任意脚本 / 组件
2
Write/ReadJson —— 读写Json
3
IsExist —— 判断文件是否存在
4
RandomColor() —— 随机颜色
4
Generalities —— 总类
1
FindT() —— 找任意脚本 / 组件
FindT —— <泛型>(名字)返回:泛型用法:
using UnityEngine; —— 引用命名空间
Chinar.FindT< GameObject >(物体名) 就能直接找到物体,返回一个 GameObject 类型
Chinar.FindT< Button >(物体名) 就能直接找到物体,返回一个 Button 类型
传入类型是什么,就返回什么类型
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 类型
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); //文件 文件路径信息:叫什么 strea 116c8 mReader = fileInfo.OpenText(); //打开文件往里写文本 string info = streamReader.ReadToEnd(); //读信息 streamReader 给 info streamReader.Close(); streamReader.Dispose(); //双关,写完 return info; } }
3
IsExist —— 判断文件是否存在
using System.IO; —— 引用命名空间Chinar.IsExist( 文件名 )
即可判断在目标路径上这个名字的文件,是否存在。并返回一个 bool 类型
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() —— 返回:颜色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. —— 可在任何脚本中调用其类中写好的函数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
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
相关文章推荐
- 【新手教程】在Jenkins中使用火线插件做静态代码扫描
- 我的Android进阶之旅------>Android Studio使用statistics插件统计项目代码总行数
- 爬虫技术 -- 进阶学习(九)使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)
- [ZZ]sed新手使用进阶全功略!
- 使用 Equinox p2 简化 Eclipse 插件的安装
- AutoCode (vs插件)自动生成代码插件 下载及使用教程(C#版)
- sed新手使用进阶全功略[转]
- 使用 Equinox p2 简化 Eclipse 插件的安装(转自www.ibm.com/developerworks)
- 使用 Eclipse Snippet 插件来管理常用代码片断。
- 使用反射简化ajax中的处理代码(.NET版)
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- 使用String.format简化代码
- 使用类成员初始化特性简化构造代码
- 在Asp.net中使用JQuery插件之jTip代码
- LIveWriter中使用插入代码块插件插入cpp代码的问题
- luyikk Monster raid 一款使用C# 写的SYN 利器,完全代码共享,希望各位高手协助优化.
- 在eclipse下使用Spket插件开发Ext Js代码
- 关于STL容器输出的更进一步简化,便于平时学习使用
- 使用反射简化ajax中的处理代码(Java版)