Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)
Unity3D插件-简化代码、封装功能
本文提供全流程,中文翻译。 Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
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); //文件 文件路径信息:叫什么
streamReader = 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;
}
}
逐步完善中….
" role="presentation" style="position: relative;">
Chinar
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)的更多相关文章
- 【Unity3D自学记录】Unity3D之自制小钟表
今天来写一个小钟表,事实上非常easy,就运用到了欧拉角. 首先创建时钟.分钟.秒钟以及4个点(12点.3点.6点.9点)偷懒了~~没弄那么多点. 时钟.分钟.秒钟这三个父级的中心一定要注意,我们旋转 ...
- 关于lombok插件的使用,强大的简化代码工具
关于下载和安装lombok插件,过程特别简单,可以参考: https://blog.csdn.net/longloveqing/article/details/81539749 安装好后,下面介绍下l ...
- 基于menu小插件探索工程实践
目录 一.准备工作 1.C/C++环境搭建 2.VSCode的配置 (1) 安装插件: (2) 设置配置文件: 二.工程化编程实战 1.模块化设计 2.可重用设计:进一步抽象 menu的进一步优化 可 ...
- 开源Unity小插件CheatConsole
我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...
- aBowman >>可以运用到自己博客上的小插件
大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...
- 自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个
自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个,兼容ie8以上浏览器,别忘了引用jquery,我用的jquery/1.11.0/其他版本没有测试,另外需 ...
- WebSocket小插件
一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...
- 【Bootstrap】优秀小插件收集
Bootstrap中不乏很多优秀的小插件来让界面更加漂亮.比如之前做过笔记的bootstrap-fileinput,select2,datetimepicker等都是属于这一系列的.这些相对而言比较大 ...
- 基于HTML5 audio元素播放声音jQuery小插件
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1609 一.前面的些唠 ...
随机推荐
- jsonSchema
可参考http://www.cnblogs.com/chenmo-xpw/p/5818773.html 我的理解 jsonSchema最大的用途是去定义和校验json数据,相当于一种json数据的一种 ...
- WCF配置后支持通过URL进行http方式调用
最近遇到一个小型项目,主要就是通过手机写入NFC信息,思考许久后决定就写一个简单的CS程序来搞定这个问题,可是当涉及到手机和PC通信的时候首先考虑到的就是IIS,同时因为数据库是SQLite,思前想后 ...
- Android Toast.makeText用法
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.下面用一个实例来看看如何使用Toast ...
- WPF StoryBoard用法
时间:2011-06-15 21:26来源:百度空间 作者:shichen4 点击: 次 StoryBoard使用,Xaml转cs代码 Canvas.Triggers EventTriggerRout ...
- 库: rspec/rspec-expectations matcher匹配器常用
https://github.com/rspec/rspec-expectations https://relishapp.com/rspec/rspec-expectations/v/3-7/doc ...
- php--------获取当前时间、时间戳
首先需要知道的是在php中获取时间方法是date(),在php中获取时间戳方法有time().strtotime().下面分别说明. date() 格式为:date($format, $timesta ...
- Knapsack CodeForces - 1132E (多重背包)
可以将大量同种物品合并为$lcm$来优化, 复杂度$O(nlcm^2)$, 好像可以用bitset优化到$O(nlcm^2/\omega)$, 但是没看太懂 const int L = 840, M ...
- hpu积分赛(回溯法)
问题 : 不开心的小明① 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 1 题目描述 一天, 小明很不开心,先是向女神表白被拒, 数学又考了0分, 回家的路上又丢了钥匙, 他非 ...
- 新学dfs(看懂了)
在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走.从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走 ...
- length,lengthb,substr,substrb,instr小用
--字符串的字符长度 select length('wm.dfw.士农工商.sda.人马ss.dfw.4.sdf.332.sf.qq.sd') from dual; --字符串的字节长度 select ...