通过扩展方法简化UnityAPI调用

通过扩展方法简化UnityAPI调用

扩展方法unity apiapi简化

通过扩展方法简化UnityAPI调用

能省一秒是一秒,时间就是金钱,没人愿意把时间花在冗长的coding上??

定义扩展方法简化Transform中对位置的赋值

  1. using UnityEngine;


  2. namespace WSFramework { 

  3. public static class TransformLocalPosImprovements { 

  4. public static void SetLocalPosX (this Transform transform, float x) { 

  5. var localPos = transform.localPosition; 

  6. localPos.x = x; 

  7. transform.localPosition = localPos; 



  8. public static void SetLocalPosY (this Transform transform, float y) { 

  9. var localPos = transform.localPosition; 

  10. localPos.y = y; 

  11. transform.localPosition = localPos; 



  12. public static void SetLocalPosZ (this Transform transform, float z) { 

  13. var localPos = transform.localPosition; 

  14. localPos.z = z; 

  15. transform.localPosition = localPos; 



  16. public static void SetLocalPosXY (this Transform transform, float x, float y) { 

  17. var localPos = transform.localPosition; 

  18. localPos.x = x; 

  19. localPos.y = y; 

  20. transform.localPosition = localPos; 



  21. public static void SetLocalPosXZ (this Transform transform, float x, float z) { 

  22. var localPos = transform.localPosition; 

  23. localPos.x = x; 

  24. localPos.z = z; 

  25. transform.localPosition = localPos; 



  26. public static void SetLocalPosYZ (this Transform transform, float y, float z) { 

  27. var localPos = transform.localPosition; 

  28. localPos.y = y; 

  29. localPos.z = z; 

  30. transform.localPosition = localPos; 




  31. /// <summary> 

  32. /// 重置操作 

  33. /// </summary> 

  34. /// <param name="trans">Trans.</param> 

  35. public static void Identity (this Transform transform) { 

  36. transform.localPosition = Vector3.zero; 

  37. transform.localScale = Vector3.one; 

  38. transform.localRotation = Quaternion.identity; 







不使用扩展方法和使用扩展方法的比较

想想曾经在localPosition赋值上浪费了多少时间,扩展方法定让你爱不释手??

  1. using System.Collections;


  2. using System.Collections.Generic; 

  3. using UnityEngine; 

  4. using WSFramework; 


  5. public class Test : MonoBehaviour 



  6. public Transform target; 


  7. // Start is called before the first frame update 

  8. void Start() 



  9. Invoke("CustomSetPosA",2f); 

  10. Invoke("CustomSetPosB",4f); 

  11. Invoke("ExtentionSetPos", 6f); 




  12. //--普通方法调用 

  13. void CustomSetPosA() 



  14. //--三行,龟龟 

  15. var pos = target.localPosition; 

  16. pos.x = 2.0f; 

  17. target.localPosition = pos; 




  18. //-- 普通方法调用 

  19. void CustomSetPosB() 



  20. //--localposition ... ... 

  21. target.localPosition=new Vector3(target.localPosition.x,target.localPosition.y,2.0f); 




  22. //--扩展方法调用 

  23. void ExtentionSetPos() 



  24. target.SetLocalPosX(0f); 






推荐一个非常好用的编辑器扩展插件,简单的添加attribute标签就可以实现需要editor下繁琐代码实现的功能,很方便的进行测试啥的,也可以利用它的接口实现自己的编辑器工具。

原文地址:https://www.cnblogs.com/Firepad-magic/p/10776744.html

时间: 2024-09-27 21:25:26

通过扩展方法简化UnityAPI调用的相关文章

C#扩展方法应用之 try catch finally 封装

本文将介绍如何利用扩展方法将 try catch finally 语句块简化成如下的调用形式: public void Test1() { Employee emp = new Employee(); emp.Try(p => p.Work()) .Catch(e => HandleException(e)) .Finally(p => p.Rest()); } 虽然这样做似乎节省不了太多代码,但看起来更工整一点.下面介绍如何实现: 一. try public class TryUnit

C#当中的扩展方法

先说有用的,c#扩展方法结论: 扩展方法能够向现有类型"添加"方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型.扩展方法必须是静态方法,可以像实例方法一样进行调用.且调用同名中实际定义的方法优先级要高于扩展方法. 先来个简单的例子: public static class test { public static int CountYourNumber(this string str) { return str.Split(new char[] {' ','.','?'

C#基础---扩展方法的应用

 最近对扩展方法比较感兴趣,就看了看资料,记录一下扩展方法的几种方法. 一. 扩展方法的基本使用: Note: 1. 扩展方法必须在静态类中, 2 扩展方法必须声明静态方法,3 扩展方法里面不能调用其他自定义方法. public static int TryToInt(this string intStr) { int number = 0; int.TryParse(intStr, out number); return number; } public static IEnumerable<

C#基础之扩展方法

扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. --- 摘自MSDN 下面我们自己定义一个A类和Program类来为string扩展方法  public static class A     {         public static 

扩展方法用法及其原理和注意事项

前言 一直以来尤其像C#一些常见的语法,本人更愿意去探讨其内部实现的原理,为什么要这么做呢?只是为了当我真正在开发中运用语法的时候不会因为犯常识性错误或者说因为一些注意事项未曾注意到而耽误一些无谓的时间,同时也能理解的更深入而不是仅仅停留在表面(或许理解也不是太透).(当然本人能力有限,太高深的东西必定是研究不明白了,也只有这能力了). 概念 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例

关于扩展方法

下面是我自己对于可扩展方法的一点理解.本人纯属小白,如果写得不对的地方,请大家指出.代码如下: namespace test{    public static class MyExtention    {        public static int WordCount(this string str)        {            int num = str.Split(',').Length;            return num;        }    }} 扩展方

C#扩展方法知多少

前言:上篇 序列化效率比拼——谁是最后的赢家Newtonsoft.Json 介绍了下序列化方面的知识.看过Demo的朋友可能注意到了里面就用到过泛型的扩展方法,本篇打算总结下C#扩展方法的用法.博主打算分三个层面来介绍这个知识点,分别是:.Net内置对象的扩展方法.一般对象的扩展方法.泛型对象的扩展方法. 什么是扩展方法?回答这个问题之前,先看看我们一般情况下方法的调用.类似这样的通用方法你一定写过: static void Main(string[] args) { string strRes

编写高质量代码改善C#程序的157个建议——建议101:使用扩展方法,向现有类型“添加”方法

建议101:使用扩展方法,向现有类型“添加”方法 考虑如何让一个sealed类型具备新的行为.以往我们会创建一个包装器类,然后为其添加方法,而这看上去一点儿也不优雅.我们也许会考虑修改设计,直接修改sealed类型,然后为其发布一个新的版本,但这依赖于你拥有全部的源码.更多的时候,我们会采取针对第三方公司提供的API进行编程的方式.对于我们来说,FCL是一组第三方公司(微软)提供给我们的最好的API. 包装类的编码形式如下: class Program { static void Main(st

LINQ与扩展方法

What LinQ是什么? 英文全称Language Integrated Query,中文翻译为语言集成查询.它是一组用于语言的扩展,它通过编写代码以查询数据库相同的方式操作内存数据. LINQ的查询操作是比较有特色也比较常用的,但它也有相关的增删改的操作. Why & How 遍历对象.sql语句用的好好的,为什么又引进LINQ? 或许是初学者,好不容易可以掌握sql语句进行增删改查的操作,或许是被固有的思维绑住,使得我们无法跳出圈子,去审视它的优缺点.sql语句肯定有它的缺点,我们先来看个