Unity3D中对系统类进行扩展教程(简化代码逻辑)

简介: Unity中对系统类进行扩展的方法 Unity扩展系统类,简化代码 本文提供全流程,中文翻译。 助力快速完成 Unity 对系统类进行扩展,添加函 新建一个脚本,名称随意 类必须设为静态 Static ,函数同样(这样才能通过其他类,直接访问到扩展函数) 形参为 this + 需要扩展的类 此时,我们通过 transform.

Unity扩展系统类,整合简化代码


本文提供全图文流程,中文翻译。

Chinar 坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)

Chinar —— 心分享、心创新!

助力快速完成 Unity 对系统类进行扩展,添加函数便于调用

给新手节省宝贵的时间,避免采坑!


Chinar 教程效果:

    /// <summary>
    /// 每帧刷新
    /// </summary>
    void Start()
    {
        gameObject.SetOff();//是不是很方便,代码很整洁呢!?
        Vector2 v = gameObject.transform.position.GetVector2();//可直接得到物体的二维坐标,取整
    }

1

Come straight to the point —— 开门见山



新建一个脚本,名称随意

类必须设为静态 Static ,函数同样(这样才能通过其他类,直接访问到扩展函数)

形参为 this + 需要扩展的类

依照下列各式
举个例子

// ========================================================
// 描述:对系统类进行扩展,添加函数
// 作者:Chinar 
// 创建时间:2018-08-28 00:03:03
// 版 本:1.0
// ========================================================
using UnityEngine;
/// <summary>
/// 扩展Vector3
/// </summary>
public static class Vctor3Ex
{
    /// <summary>
    /// 调用 transform.position.GetVector2,可直接得到 x,y 平面坐标的信息,并对坐标直接取整
    /// </summary>
    /// <returns>二维坐标</returns>
    public static Vector2 GetVector2(this Vector3 v)
    {
        int x = Mathf.RoundToInt(v.x);
        int y = Mathf.RoundToInt(v.y);
        return new Vector2(x, y);
    }

    /// <summary>
    /// 通过 gameobject.SetOff,可直接关闭当前游戏对象
    /// </summary>
    public static void SetOff(this GameObject go)
    {
        go.SetActive(false);
    }


    /// <summary>
    /// 关闭游戏对象
    /// </summary>
    public static void Off(this Transform go)
    {
        go.gameObject.SetActive(false);
    }


    /// <summary>
    /// 激活游戏对象
    /// </summary>
    public static void On(this GameObject go)
    {
        go.SetActive(true);
    }


    /// <summary>
    /// 激活游戏对象
    /// </summary>
    public static void On(this Transform go)
    {
        go.gameObject.SetActive(true);
    }


    /// <summary>
    /// 设置父物体
    /// </summary>
    public static void SetParent(this GameObject go, GameObject parentGo)
    {
        go.transform.SetParent(parentGo.transform);
    }
}

2

Instruction and Test —— 说明与测试


此时,我们通过 transform.position.GetVector2 就可以调用到扩展后的函数

关闭游戏对象,一般平时写的是gameObject.SetActive(false)

现在:gameobject.SetOff 就可以调用到扩展后的函数,关闭游戏对象

其他的就要靠大家的需求,自己开发啦....是不是很方便呢!?

举个例子

    /// <summary>
    /// 每帧刷新
    /// </summary>
    void Start()
    {
        gameObject.SetOff();//是不是很方便,代码很整洁呢!?
        Vector2 v = gameObject.transform.position.GetVector2();//可直接得到物体的二维坐标,取整
    }

其他

May Be —— 搞开发,总有一天要做的事!


拥有自己的服务器,无需再找攻略!

Chinar 提供一站式教程,闭眼式创建!

为新手节省宝贵时间,避免采坑!




服务器、建站、备案、网站配置等(服务器相关教程大全)


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

相关文章
|
1月前
|
存储 人工智能 C#
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
50 0
|
19天前
|
JavaScript 前端开发 C#
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
18 0
|
1月前
|
IDE 持续交付 vr&ar
Unity编辑器扩展
Unity编辑器扩展
|
1月前
|
存储 搜索推荐 C#
Unity编辑器扩展
Unity编辑器扩展
21 0
|
1月前
|
C# 图形学
【Unity 3D】C#控制语句break、continue及算数运算符和逻辑运算符的讲解(附测试代码)
【Unity 3D】C#控制语句break、continue及算数运算符和逻辑运算符的讲解(附测试代码)
38 1
|
1月前
|
编解码 前端开发 人机交互
【Unity 3D】UI系统中UGUI各个组件的详细讲解(附源码 超详细)
【Unity 3D】UI系统中UGUI各个组件的详细讲解(附源码 超详细)
120 0
|
1月前
|
自然语言处理 C# 图形学
【Unity 3D】C#中正则表达式的详解(附测试代码 超详细)
【Unity 3D】C#中正则表达式的详解(附测试代码 超详细)
85 0
|
1月前
|
C# 图形学
【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)
【Unity 3D】C#中String类的介绍及字符串常用操作详解(附测试代码 超详细)
114 0
|
1月前
|
C# 图形学
【Unity 3D】C#中while do while for foreach等循环语句的讲解(附测试代码)
【Unity 3D】C#中while do while for foreach等循环语句的讲解(附测试代码)
126 0
|
1月前
|
图形学
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏
【Unity3D开发小游戏】Unity3D零基础一步一步教你制作跑酷类游戏