經過擴展方法簡化UnityAPI調用

經過擴展方法簡化UnityAPI調用

經過擴展方法簡化UnityAPI調用

能省一秒是一秒,時間就是金錢,沒人願意把時間花在冗長的coding上😄html

定義擴展方法簡化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賦值上浪費了多少時間,擴展方法定讓你愛不釋手👍api

  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下繁瑣代碼實現的功能,很方便的進行測試啥的,也能夠利用它的接口實現本身的編輯器工具。編輯器

相關文章
相關標籤/搜索