【Unity3D日常开发】提供开发效率系列之工具类的建立
发布日期:2021-06-30 11:40:08
浏览次数:2
分类:技术文章
本文共 9066 字,大约阅读时间需要 30 分钟。
推荐阅读
一、导言
在开发中,我们会将调用次数比较多的函数单独提出来写到一个类中,比如字符串转16进制,给字符串加密这些都是比较常用的,就可以将这些常用的函数提取出来,放到工具类中,方便调用
二、工具类
2-1、查找对象
根据父物体对象,找到指定名字的子物体,返回GameObject对象
//child 是要查询的物体的父节点,name是要查询的子物体的名字 public static GameObject Find(GameObject child, string name) { //定义一个Transform 变量it用来接收查询到子物体 Transform it = child.transform.Find(name); if (it != null) { return it.gameObject; } if (child.transform.childCount == 0) { return null; } //查找子对象的子对象 for (int i = 0; i < child.transform.childCount; i++) { //递归查询 定义一个Transform 变量its用来接收查询到子物体 GameObject its = Find(child.transform.GetChild(i).gameObject, name); //如果不为空,就是存在次物体返回该物体 if (its != null) { return its.gameObject; } } return null; }
根据父物体对象,找到指定组件的指定的名字的子对象,返回的是指定组件的对象
//child 是要查询的物体的父节点,name是要查询的子物体的名字 返回的是一个泛型 public static T Find(GameObject child, string name) { //定义一个Transform 变量it用来接收查询到子物体 Transform it = child.transform.Find(name); if (it != null) { return it.GetComponent (); } if (child.transform.childCount == 0) { return default; } //查找子对象的子对象 for (int i = 0; i < child.transform.childCount; i++) { //递归查询 定义一个Transform 变量its用来接收查询到子物体 GameObject its = Find(child.transform.GetChild(i).gameObject, name); //如果不为空,就是存在次物体返回该物体 if (its != null) { return its.GetComponent (); } } return default; }
根据名字,返回指定名字下的组件
////// 获取物体名下的 T 组件 /// /// 物体名 ///public static T FindT (string namestring) { return GameObject.Find(namestring).GetComponent (); }
根据名字,返回指定Button组件
////// 获取Button组件 /// /// ///public static Button FindBtn(string namestring) { return GameObject.Find(namestring).GetComponent
2-2、对文本的处理
将数组中的所有字符按照特定分隔符拼接
////// 将一个数组转换为一个字符串,按特定的分隔符拼接 /// ////// /// /// public static string ArrayToString (T[] tarray, string splitestr) { string arrayString = ""; for(int i = 0;i
将字符串转化为字节数组
////// 将一个字符串转换为一个字节数组 /// /// ///public static byte[] StringToByteArray(string msg) { return System.Text.Encoding.UTF8.GetBytes(msg); }
将byte数组转换为字符串
////// byte数组转换为字符串 /// /// ///public static string ByteArrayToString(byte[] byteArray, int index, int size) { return System.Text.Encoding.UTF8.GetString(byteArray, index ,size); }
将字符串根据指定分隔符拆分,然后转化为Int数组
public static int[] SpliteStringToIntArray(string str, char splitechar = ',') { //拆分 string[] strArray = SpliteStringByChar(str, splitechar); //定义一个int数组 int[] intArray = new int[strArray.Length]; for (int i = 0; i < strArray.Length; i++) { intArray[i] = int.Parse(strArray[i]); } return intArray; } ////// 根据特定的字符拆分字符串 /// /// 被拆分字符串 /// 拆分符 ///public static string[] SpliteStringByChar(string targetstr, char splitechar = ',') { return targetstr.Split(splitechar); }
将字符串根据指定分隔符拆分,然后转化为任意数组
public static T[] SpliteStringToArray(string str, char splitechar = ',') { //拆分 string[] strArray = SpliteStringByChar(str, splitechar); T[] tArray = new T[strArray.Length]; for(int i = 0;i /// 根据特定的字符拆分字符串 /// /// 被拆分字符串 /// 拆分符 ///public static string[] SpliteStringByChar(string targetstr, char splitechar = ',') { return targetstr.Split(splitechar); }
将字符串根据指定分隔符拆分,然后转化为float数组
public static float[] SpliteStringTofloatArray(string str, char splitechar = ',') { //拆分 string[] strArray = SpliteStringByChar(str, splitechar); //定义一个int数组 float[] intArray = new float[strArray.Length]; for (int i = 0; i < strArray.Length; i++) { intArray[i] = float.Parse(strArray[i]); } return intArray; } ////// 根据特定的字符拆分字符串 /// /// 被拆分字符串 /// 拆分符 ///public static string[] SpliteStringByChar(string targetstr, char splitechar = ',') { return targetstr.Split(splitechar); }
把任意对象转成Json
////// 把一个任意的对象转换为json的byte数组 /// /// ///public static byte[] ObjectToJsonBytes(object target) { string json = LitJson.JsonMapper.ToJson(target); return StringToByteArray(json); } /// /// 将一个字符串转换为一个字节数组 /// /// ///public static byte[] StringToByteArray(string msg) { return System.Text.Encoding.UTF8.GetBytes(msg); }
使用正则表达式 将unicode转换为中文
////// 正则表达式:Unicode转换中文 /// /// ///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(); }); }
2-3、对对象的处理
根据预制体和父物体,克隆对象,然后返回这个克隆的对象
////// 克隆并指定父物体 /// /// /// ///public static GameObject Instantiate(GameObject prefab,GameObject parent) { GameObject gb = GameObject.Instantiate(prefab); gb.transform.parent = parent.transform; gb.transform.localPosition = gb.transform.localEulerAngles = Vector3.zero; gb.transform.localScale = Vector3.one; return gb; }
根据父物体,删除这个物体下的所有子物体
////// 删除指定物体下的所有子物体 /// /// public static void DestroyChildGameObject(GameObject parent) { for(int i = 0;i
2-4、对文件的处理
写入Json文件
////// 写入JSON文件 /// /// 路径 /// 文件名 /// 信息 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(); //双关,写完 }
读取Json文件
////// 读取JSON文件 /// /// 路径 /// 文件名 ///string 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; }
判断文件是否存在
////// 文件是否存在 /// /// 文件名 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 }
2-5、 其他
返回一个随机颜色
////// 随机颜色 /// ///Color public Color RandomColor() { float r = UnityEngine.Random.Range(0f, 1f); float g = UnityEngine.Random.Range(0f, 1f); float b = UnityEngine.Random.Range(0f, 1f); Color color = new Color(r, g, b); return color; }
安卓平台显示信息
#if UNITY_ANDROID ////// 提示信息 /// /// Text. /// Activity. 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("currentActivity"); } AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); AndroidJavaObject context = activity.Call ("getApplicationContext"); activity.Call("runOnUiThread", new AndroidJavaRunnable(() => { AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", text); Toast.CallStatic ("makeText", context, javaString, Toast.GetStatic ("LENGTH_SHORT")).Call("show"); } )); } public static AndroidJavaObject ToJavaString(string CSharpString) { return new AndroidJavaObject("java.lang.String", CSharpString); }#endif
转载地址:https://itmonon.blog.csdn.net/article/details/112664728 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月20日 03时59分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
超越白皮书8:穿云而过的闪电网络
2019-04-30
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
基于CentOS 7的Linux常用命令行命令
2019-04-30
行阶梯型矩阵
2019-04-30
信号量机制
2019-04-30
临界资源与临界区
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
数字图像处理总复习
2019-04-30
图像去噪(包含修正的阿尔法均值滤波及通用滤波方法代码)
2019-04-30
SVM进行人脸检测
2019-04-30
C++学习笔记
2019-04-30
图像处理学习笔记
2019-04-30
Machine Learning Onramp on MATLAB 学习笔记
2019-04-30