[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!)
- [Unity] Xamarin Studio 安裝與使用
- [Unity] 腳本模板(一)、修改Unity預設模板