通过扩展方法简化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. 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.  
  32. /// <summary> 
  33. /// 重置操作 
  34. /// </summary> 
  35. /// <param name="trans">Trans.</param> 
  36. public static void Identity (this Transform transform)
  37. transform.localPosition = Vector3.zero; 
  38. transform.localScale = Vector3.one; 
  39. transform.localRotation = Quaternion.identity; 



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

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

  1. using System.Collections; 
  2. using System.Collections.Generic; 
  3. using UnityEngine; 
  4. using WSFramework; 
  5.  
  6. public class Test : MonoBehaviour 

  7. public Transform target; 
  8.  
  9. // Start is called before the first frame update 
  10. void Start() 

  11. Invoke("CustomSetPosA",2f); 
  12. Invoke("CustomSetPosB",4f); 
  13. Invoke("ExtentionSetPos", 6f); 

  14.  
  15. //--普通方法调用 
  16. void CustomSetPosA() 

  17. //--三行,龟龟 
  18. var pos = target.localPosition; 
  19. pos.x = 2.0f; 
  20. target.localPosition = pos; 

  21.  
  22. //-- 普通方法调用 
  23. void CustomSetPosB() 

  24. //--localposition ... ... 
  25. target.localPosition=new Vector3(target.localPosition.x,target.localPosition.y,2.0f); 

  26.  
  27. //--扩展方法调用 
  28. void ExtentionSetPos() 

  29. target.SetLocalPosX(0f); 


  30.  

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

转载于:https://www.cnblogs.com/Firepad-magic/p/10776744.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值