經過擴展方法簡化UnityAPI調用
擴展方法
unity api
api簡化
經過擴展方法簡化UnityAPI調用
能省一秒是一秒,時間就是金錢,沒人願意把時間花在冗長的coding上😄html
定義擴展方法簡化Transform中對位置的賦值
- using UnityEngine;
- namespace WSFramework {
- public static class TransformLocalPosImprovements {
- public static void SetLocalPosX (this Transform transform, float x) {
- var localPos = transform.localPosition;
- localPos.x = x;
- transform.localPosition = localPos;
- }
- public static void SetLocalPosY (this Transform transform, float y) {
- var localPos = transform.localPosition;
- localPos.y = y;
- transform.localPosition = localPos;
- }
- public static void SetLocalPosZ (this Transform transform, float z) {
- var localPos = transform.localPosition;
- localPos.z = z;
- transform.localPosition = localPos;
- }
- public static void SetLocalPosXY (this Transform transform, float x, float y) {
- var localPos = transform.localPosition;
- localPos.x = x;
- localPos.y = y;
- transform.localPosition = localPos;
- }
- public static void SetLocalPosXZ (this Transform transform, float x, float z) {
- var localPos = transform.localPosition;
- localPos.x = x;
- localPos.z = z;
- transform.localPosition = localPos;
- }
- public static void SetLocalPosYZ (this Transform transform, float y, float z) {
- var localPos = transform.localPosition;
- localPos.y = y;
- localPos.z = z;
- transform.localPosition = localPos;
- }
-
-
-
-
-
- public static void Identity (this Transform transform) {
- transform.localPosition = Vector3.zero;
- transform.localScale = Vector3.one;
- transform.localRotation = Quaternion.identity;
- }
- }
- }
不使用擴展方法和使用擴展方法的比較
想一想曾經在localPosition賦值上浪費了多少時間,擴展方法定讓你愛不釋手👍api
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using WSFramework;
-
- public class Test : MonoBehaviour
- {
- public Transform target;
-
-
- void Start()
- {
- Invoke("CustomSetPosA",2f);
- Invoke("CustomSetPosB",4f);
- Invoke("ExtentionSetPos", 6f);
- }
-
-
- void CustomSetPosA()
- {
-
- var pos = target.localPosition;
- pos.x = 2.0f;
- target.localPosition = pos;
- }
-
-
- void CustomSetPosB()
- {
-
- target.localPosition=new Vector3(target.localPosition.x,target.localPosition.y,2.0f);
- }
-
-
- void ExtentionSetPos()
- {
- target.SetLocalPosX(0f);
- }
- }
-
推薦一個很是好用的編輯器擴展插件,簡單的添加attribute標籤就能夠實現須要editor下繁瑣代碼實現的功能,很方便的進行測試啥的,也能夠利用它的接口實現本身的編輯器工具。編輯器