使用ITweenX 來簡化iTween外掛程式的函數調用,itweenxitween
iTween外掛程式是u3d中很火的動畫外掛程式。
但是幾乎所有函數的參數都是字串,函數名也要以字串的方式傳入,這就不好了,我們沒有必要去記EaseType和其他的參數串。
對於 設計模式的要求是 多組合,少繼承。多擴充,少修改。
由於這個外掛程式本身的功能沒有任何問題。所以我們沒有必要做任何徒勞的重構。就是擴充就玩了唄。
使用:
把指令碼放進Standard Assets/Scripts 等等檔案夾中即可; 這也很容易被javascript 或 Boo語言使用. 如果你聲明一個 public 的EaseType類型變數, 你能夠很容易的設定easetype 在面板 inspector. 上。
例子,隨便調用一個方法:
public class MyClass: MonoBehaviour{public EaseType easeType; void Start(){iTween.ValueTo( gameObject, iTween.Hash( iTweenX.from, 0f, iTweenX.to, 1f, iTweenX.time, 1f, iTweenX.onUpdate, "OnUpdateValue", iTweenX.onStart, "OnStart", iTweenX.onComplete, "OnComplete", iTweenX.easeType, iTweenX.Ease(easeType), iTweenX.ignoreTimescale, true ) );}void OnUpdateValue(float value){ print( "OnUpdateValue : " + value.ToString() ); }void OnStart(){ print( "OnStart" ); }void OnComplete(){ print( "OnComplete" ); }}
iTweenX.cs
public enum EaseType{EaseInQuad = 0,EaseOutQuad, EaseInOutQuad, EaseInCubic, EaseOutCubic, EaseInOutCubic, EaseInQuart, EaseOutQuart, EaseInOutQuart, EaseInQuint, EaseOutQuint, EaseInOutQuint, EaseInSine, EaseOutSine, EaseInOutSine, EaseInExpo, EaseOutExpo, EaseInOutExpo, EaseInCirc, EaseOutCirc, EaseInOutCirc, Linear, Spring, EaseInBounce, EaseOutBounce, EaseInOutBounce,EaseInBack, EaseOutBack, EaseInOutBack, EaseInElastic, EaseOutElastic, EaseInOutElastic} public static class iTweenX{public readonly static string[] easeTypes = new string[32]{"easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","linear","spring","easeInBounce","easeOutBounce","easeInOutBounce","easeInBack","easeOutBack","easeInOutBack","easeInElastic","easeOutElastic","easeInOutElastic"}; public const string time ="time";public const string speed ="speed";public const string from ="from";public const string to ="to";public const string onStart = "onstart";public const string onStartTarget ="onstarttarget";public const string onStartParams ="onstartparams";public const string onUpdate ="onupdate";public const string onUpdateTarget ="onupdatetarget";public const string onUpdateParams ="onupdateparams";public const string onComplete ="oncomplete";public const string onCompleteTarget ="oncompletetarget";public const string onCompleteParams ="oncompleteparams";public const string ignoreTimescale ="ignoretimescale";public const string easeType ="easetype"; public static string Ease( EaseType type ){return easeTypes[ (int)type ];}}