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 一.前面的些唠 ...
随机推荐
- spring boot 邮件发送(带附件)
首先开启QQ邮箱的POP.SMTP服务器,获取授权码. 设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 pom.xml需要加载三个ja ...
- Unity 中 ContextMenu 的用法
在自定义脚本中的方法前加入 [ContextMenu("Execute")] 标签,然后将脚本挂载到对象上,可以再编辑模式下执行标记的方法: 自定义脚本如下: using Sy ...
- .net GUI框架
十大开源的.NET用户界面框架 让GUI设计不再犯难 选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户.好的UI ...
- 雷林鹏分享:C# 集合(Collection)
C# 集合(Collection) 集合(Collection)类是专门用于数据存储和检索的类.这些类提供了对栈(stack).队列(queue).列表(list)和哈希表(hash table)的支 ...
- 『OpenCV3』Harris角点特征_API调用及python手动实现
一.OpenCV接口调用示意 介绍了OpenCV3中提取图像角点特征的函数: # coding=utf- import cv2 import numpy as np '''Harris算法角点特征提取 ...
- python-day17--迭代器
1.迭代: 迭代就是一个一个一个挨着的取值 2.可迭代类型: str ,列表,元组,集合,字典 3.判断迭代器和可迭代的方法 #第一种:判断内部是不是实现了 __next__#'__next__' ...
- 最应该注意的Oracle版本之一
最近以来,两个用户的库接连出现问题,经过查阅资料和分析,确定为数据库bug所致,其实,早在很久前,也遭遇过这个版本的类似bug,当时似乎还惊动了原厂的技术人员,后来确定为这个版本的bug,这个版本就是 ...
- vm options设置
-Dfile.encoding=UTF-8 vmopiton.properties 加入 8A7674
- sha256 in C language
sha256.h #ifndef _SHA256_H#define _SHA256_H #ifndef uint8#define uint8 unsigned char#endif #ifndef u ...
- learning uboot support web http function in qca4531 cpu
reference :https://forum.openwrt.org/viewtopic.php?id=43237 reference :http://blog.chinaunix.net/uid ...