通过扩展方法简化UnityAPI调用

通过扩展方法简化UnityAPI调用

通过扩展方法简化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. } 
  9. public static void SetLocalPosY (this Transform transform, float y) { 
  10. var localPos = transform.localPosition; 
  11. localPos.y = y; 
  12. transform.localPosition = localPos; 
  13. } 
  14. public static void SetLocalPosZ (this Transform transform, float z) { 
  15. var localPos = transform.localPosition; 
  16. localPos.z = z; 
  17. transform.localPosition = localPos; 
  18. } 
  19. public static void SetLocalPosXY (this Transform transform, float x, float y) { 
  20. var localPos = transform.localPosition; 
  21. localPos.x = x; 
  22. localPos.y = y; 
  23. transform.localPosition = localPos; 
  24. } 
  25. public static void SetLocalPosXZ (this Transform transform, float x, float z) { 
  26. var localPos = transform.localPosition; 
  27. localPos.x = x; 
  28. localPos.z = z; 
  29. transform.localPosition = localPos; 
  30. } 
  31. public static void SetLocalPosYZ (this Transform transform, float y, float z) { 
  32. var localPos = transform.localPosition; 
  33. localPos.y = y; 
  34. localPos.z = z; 
  35. transform.localPosition = localPos; 
  36. } 
  37.  
  38. /// <summary> 
  39. /// 重置操作 
  40. /// </summary> 
  41. /// <param name="trans">Trans.</param> 
  42. public static void Identity (this Transform transform) { 
  43. transform.localPosition = Vector3.zero; 
  44. transform.localScale = Vector3.one; 
  45. transform.localRotation = Quaternion.identity; 
  46. } 
  47. } 
  48. } 

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

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

  1. using System.Collections; 
  2. using System.Collections.Generic; 
  3. using UnityEngine; 
  4. using WSFramework; 
  5.  
  6. public class Test : MonoBehaviour 
  7. { 
  8. public Transform target; 
  9.  
  10. // Start is called before the first frame update 
  11. void Start() 
  12. { 
  13. Invoke("CustomSetPosA",2f); 
  14. Invoke("CustomSetPosB",4f); 
  15. Invoke("ExtentionSetPos", 6f); 
  16. } 
  17.  
  18. //--普通方法调用 
  19. void CustomSetPosA() 
  20. { 
  21. //--三行,龟龟 
  22. var pos = target.localPosition; 
  23. pos.x = 2.0f; 
  24. target.localPosition = pos; 
  25. } 
  26.  
  27. //-- 普通方法调用 
  28. void CustomSetPosB() 
  29. { 
  30. //--localposition ... ... 
  31. target.localPosition=new Vector3(target.localPosition.x,target.localPosition.y,2.0f); 
  32. } 
  33.  
  34. //--扩展方法调用 
  35. void ExtentionSetPos() 
  36. { 
  37. target.SetLocalPosX(0f); 
  38. } 
  39. } 
  40.  

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

posted @ 2019-04-26 21:32  世纪末の魔术师  阅读(567)  评论(0)    收藏  举报