Unity框架学习_拓展静态方法_更轻松简介的开发方式
目录
1、博客介绍
平时我们调研官方属性的时候,例如Transfrom,GameObject的时候只能调用一些官方自己API
官方API调用例子:
gameObject.GetComponent<Test>();
拓展API调用例子:
gameObject.IsTestFuc();
现在我们想要实现的就是官方属性调用自己编写的API,这就是静态类拓展了,最近在学习凉鞋老师的框架QFramework,很值得大家学习,看到了一些关于静态类拓展的内容,学习和整理了一下,贴出来以供各位参考。
2、内容
这里给大家列举一两个拓展方法,供大家理解
例1:判断一个GameObject是否为空,非空返回自身,空则实例后返回
正常写法:
private GameObject obj;
public GameObject GetObj()
{
if (obj==null)
{
obj = new GameObject();
}
return obj;
}
利用this + T的方式来在静态类中拓展静态方法的方式来简化这个流程。
using UnityEngine;
/// <summary>
/// time:2019/5/10 0:43
/// author:Sun
/// des:GameObject_静态类拓展
/// </summary>
public static class GameObjectExtention{
/// <summary>
/// GameObject非空返回,空实例返回
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static GameObject IsNullToInit(this GameObject obj)
{
if (obj==null)
{
obj = new GameObject();
}
return obj;
}
}
拓展方法调用:
GameObject newObj = obj.IsNullToInit();
如此一来,我们在静态的拓展方法中已经做过了判断,所以可直接像上述obj.IsNullToInit()一样去调用了。
例2:只改变一个Transform的X值,Y和Z要保持不变
正常写法:
private Transform tra;
private void SetX(float x)
{
tra.position = new Vector3(x,tra.position.y,tra.position.z);
}
拓展方法:
using UnityEngine;
/// <summary>
/// time:2019/5/8
/// author:Sun
/// des:Transfom_静态类拓展
/// </summary>
public static class TransformExtension{
/// <summary>
/// 设置X
/// </summary>
/// <param name="transform"></param>
/// <param name="x"></param>
public static void SetX(this Transform transform, float x)
{
transform.position = new Vector3(x, transform.position.y, transform.position.z);
}
}
拓展方法调用:
tra.SetX(10);
博主从凉鞋老师的拓展类摘了很多拓展方法出来,放在了GitHub上,有兴趣的同学可以了解一下,后续会不断的向里面补充和更新。
3、推送
博主Github:https://github.com/KingSun5/StaticExtension
学习:https://blog.csdn.net/egostudio/article/details/51086453
QFramework:https://github.com/liangxiegame/QFramework
4、结语
博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
QQ交流群:806091680(Chinar)
该群为CSDN博主Chinar所创,推荐一下!我也在群里!
本文属于原创文章,转载请著名作者出处并置顶!!!!!