| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 随笔-在Unity中扩展方法(Dictionary.GetDicValue) -> 正文阅读 |
|
[游戏开发]随笔-在Unity中扩展方法(Dictionary.GetDicValue) |
? ? ? ?我们在使用Uinty开发时,有时候有函数提供的方法并不能直接满足我们的需求,可能需要多些很多行代码或者封装一个函数去处理我们的需求,这样会使我们的代码更加的臃肿,而且复用性还需要根据需求的不同去更改我们封装的函数。 这时候如果我们去扩展一个自定义的方法来提高我们的工作效率记忆代码的复用率,我们将不用去可以的调用任何一个函数就可以达到我们想要的方法,可以直接在类里面实现。??? MSDN上,对扩展方法的定义如下:????? ? ? ? ?“扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。” 基本使用方法: ? ? ? ?基本使用方法就是创建一个静态类,在this的关键字后面跟上我们想要扩展的类,这样这个类的所有对象都可以使用此方法 。 下面我将举出几个例子来对部分方法进行扩展。 (一)扩展字典Dictionary? ? ? ?在使用Unity的时候我们经常会用到字典Dictionary,当我们想通过字典的key去找value时,只能通过TryGetValue中的out去获取到想要得到的value,总感觉不是很方便,先上一段代码:
? ? ? ?这时候我们可以自己创建一个脚本Extension类去扩展我们的Dictionary,代码如下:
(二)扩展我们Transform? ? ? ? 我相信大家在做开发的过程中肯定会用到transform.position = new Vector3(transform.position.x, 1, transform.position.z);这样类似的代码去移动我们的组件。 ? ? ? ? 但是有时候我们可能仅仅需要移动我们组件的单轴坐标,这时候我们要么去生命一个新的Vector3去储存我们transform的位置,要么就是像我上面写的一样,总感觉一点都不大气上档次。 ? ? ? ? 这时候我们可以选择去扩展我们的Transform去让我们得代码不这么臃肿。先贴一段扩展方法的代码(同样放在我们的Extension里):
这样就分别扩展了我们transform.position的x、y、z的坐标。使用方法如下:
这样扩展了之后是不是代码也显得不是那么的臃肿,复用性也非常的强。这种方法也同样适用于更改物体的大小也就是transform.localScale 写在最后:? ? ? ?本文只是很简单的举了扩展方法的几个例子。在实际开发过程中,我们可以根据项目需求 、自己的开发需求去一直增加我们的扩展类,如果遇到好的方便的扩展方法我也会继续更新本文。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/17 3:34:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |