[Unity] 擴充方法 – Extension Methods



Overview

當我們開發了一些通用的函式
特別指那些 public static 的函式
在任何地方都有可能被呼叫來使用
這些函式通常會被放在叫 Helper、Tool、Util 之類的類別中
SomeHelper.SomeMethod();
在 C# 中的 Extension Methods 功能
提供了另外一選擇
1. 更直覺簡潔的使用
2. 如何使用 Extension Methods
3. 加入自己習慣的用法


1. 更直覺簡潔的使用

拿設定位置來舉例,transform 的 position、localPosition 等屬性
都是要塞 Vector3 給他
但今天我只想改其中一個軸的位置
那麼另外兩個軸就必須要塞原本的值進去,有點麻煩!
所以理所當然我們會想寫一個通用 public static 函式
比方說叫做 TransformHelper


TransformHelper.SetLocalPositionX(obj.transform, 100);

這方法絕對沒問題,不過如果使用 Extension Methods
可以讓你更簡潔的使用,除了少了一個參數之外
你也不用記相關的 Helper 到底是什麼開頭的:

obj.transform.SetLocalPositionX(100);

2. 如何使用 Extension Methods

(1) 繼承 partial class ExtensionMethods
(2) 目標類別前加上 this 關鍵字
(3) 檔名可以任意命名

3. 加入自己習慣的用法

這個範例主要把 Instantiate 的功能轉化為 Extension 使用
如果有用過 flash 或是 cocos2d-x 的朋友應該對 AddChild 這個方法不陌生
透過 Extension Methods,你可以加入你自己習慣的用法


var obj = parent.AddChild(prefab);
obj.Destroy();

完整專案 – HotBloodr




歡迎您留言與分享!(Welcome for comments or sharing!)

Related Post:

Tagged on: