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插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)的更多相关文章

  1. 【Unity3D自学记录】Unity3D之自制小钟表

    今天来写一个小钟表,事实上非常easy,就运用到了欧拉角. 首先创建时钟.分钟.秒钟以及4个点(12点.3点.6点.9点)偷懒了~~没弄那么多点. 时钟.分钟.秒钟这三个父级的中心一定要注意,我们旋转 ...

  2. 关于lombok插件的使用,强大的简化代码工具

    关于下载和安装lombok插件,过程特别简单,可以参考: https://blog.csdn.net/longloveqing/article/details/81539749 安装好后,下面介绍下l ...

  3. 基于menu小插件探索工程实践

    目录 一.准备工作 1.C/C++环境搭建 2.VSCode的配置 (1) 安装插件: (2) 设置配置文件: 二.工程化编程实战 1.模块化设计 2.可重用设计:进一步抽象 menu的进一步优化 可 ...

  4. 开源Unity小插件CheatConsole

    我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...

  5. aBowman >>可以运用到自己博客上的小插件

    大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...

  6. 自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个

    自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个,兼容ie8以上浏览器,别忘了引用jquery,我用的jquery/1.11.0/其他版本没有测试,另外需 ...

  7. WebSocket小插件

    一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...

  8. 【Bootstrap】优秀小插件收集

    Bootstrap中不乏很多优秀的小插件来让界面更加漂亮.比如之前做过笔记的bootstrap-fileinput,select2,datetimepicker等都是属于这一系列的.这些相对而言比较大 ...

  9. 基于HTML5 audio元素播放声音jQuery小插件

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1609 一.前面的些唠 ...

随机推荐

  1. Android中getLocationOnScreen和getLocationInWindow 获取屏幕大小

    需要确定组件在父窗体中的坐标时,使用getLocationInWindow,需要获得组件在整个屏幕的坐标时,使用getLocationOnScreen. 其中location [0]代表x坐标,loc ...

  2. 【Mac】小技巧:实现ssh服务器别名免密登录

    前言 我们平常使用ssh user@host然后输入密码的方式来远程链接一个服务器,但是,如果要管理的服务器太多,记住这些服务器的IP和用户名.密码就是一个复杂的工作.当然,我们可以把这些信息用文档记 ...

  3. jdk1.8

    Jdk1.8新特性 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性, ...

  4. scala 与 java 之间的关系

    scala来源于java,但又高于java. scala的设计者Martin Odersky就是一个JAVA控,这位牛人设计了javac和编写了jdk中的通用代码.可以说java语言本身就是Marti ...

  5. 错误代码0x00000001,好多软件连不了网,求助~(WIN7/win8/win9/win10)

    解决办法: 以管理员身份运行命令行,在弹出的窗口中运行如下命令: netsh winsock reset catalog netsh int ip reset reset.log hit 让被阻止了的 ...

  6. ACM-ICPC Beijing Online A The Book List

    比赛的时候一眼就看出是字典树+DFS了,然而这题题意比较难理解,还有不少WA点.所以很快敲完之后和队友反复斟酌题意,修改代码.结果还是交了3发WA.最后猜测目录和书在同一个母目录域下同名是不同的,增加 ...

  7. android--------ListView和ExpandableListView的侧滑删除操作

    本案例主要实现了ListView和ExpandableListView的侧滑删除操作功能 效果图: ListView的Adapter类 private class SlideAdapter exten ...

  8. Up and Down the Tree CodeForces - 1065F (树形dp)

    链接 题目大意:给定$n$结点树, 假设当前在结点$v$, 有两种操作 $(1)$移动到$v$的子树内任意一个叶子上 $(2)$若$v$为叶子, 可以移动到距离$v$不超过$k$的祖先上 初始在结点$ ...

  9. H.Playing games

    fwt #include<bits/stdc++.h> using namespace std; const int N=1<<19; const int mod=100000 ...

  10. python-day3笔记

    1.通信是软件(计算机)与软件(计算机)之间的通信 2.网络指的是: 一:计算机与计算机之间通过物理连接介质(网络设备)连接到一起:光纤--物理连接介质,和网线一样. 二:计算机与计算机之间基于网络协 ...