2017-05-18 3 views
0

は私が持っているコード:Unity iTweenプラグインでoncompleteparamsを使用するには?

iTween.MoveTo(
gameObject, 
iTween.Hash("x",_x,"z",_y, "time", 2.0f, "easetype", 
iTween.EaseType.easeInExpo, 
"oncomplete", "afterPlayerMove", 
"oncompleteparams", iTween.Hash("value", _fieldIndex) 
)); 

を私はoncompleteparamsを使用する方法がわかりません。 公式には例がありませんmanual

どのようにoncompleteparamsを使用しますか?

答えて

1

Hereは、Itween.MoveTo関数の直接のドキュメントです。

enter image description here

oncompleteparams引数としてObjectを期待しています。つまり、ほぼすべてのデータ型を渡すことができます。例えば、string,bool,int,float,doubleおよびobject instanceは、それに渡すことができるデータ型の1つである。

コールバック側では、コールバック関数がObjectをパラメータとして使用するようにします。コールバック関数の内部では、Objectパラメータを渡したデータ型の型にキャストします。

例:

"oncomplete", "afterPlayerMove", 
"oncompleteparams", 5) 

コールバック:あなたが見ることができるように

public void afterPlayerMove(object cmpParams) 
{ 
    Debug.Log("Result" + (int)cmpParams); 
} 

、我々はoncompleteparams関数に5を渡していると5は整数です。 afterPlayerMoveコールバック関数では、結果を得るために整数に戻します。あなたの例では


iTween.HashがHashtableを返しますので、あなたはHashtableにキャストしなければならないので、あなたはoncompleteparamsのためiTween.Hashを使用。その後、Hashtableの値を取得するには、その型にキャストする必要があります。

"oncomplete", "afterPlayerMove", 
"oncompleteparams", iTween.Hash("value", _fieldIndex) 

コールバック:

_fieldIndexintであると仮定すると。

public void afterPlayerMove(object cmpParams) 
{ 
    Hashtable hstbl = (Hashtable)cmpParams; 
    Debug.Log("Your value " + (int)hstbl["value"]); 
} 

最後に、あなたのコードが読めません。このコードを簡略化して、他の人が次回にあなたを手助けしやすくしてください。

完全な単純化した例:

int _x, _y = 6; 

//Parameter 
int _fieldIndex = 4; 
float floatVal = 2; 
string stringVal = "Hello"; 
bool boolVal = false; 
GameObject gObjVal = null; 

void Start() 
{ 
    Hashtable hashtable = new Hashtable(); 
    hashtable.Add("x", _x); 
    hashtable.Add("z", _y); 
    hashtable.Add("time", 2.0f); 
    hashtable.Add("easetype", iTween.EaseType.easeInExpo); 
    hashtable.Add("oncomplete", "afterPlayerMove"); 

    //Create oncompleteparams hashtable 
    Hashtable paramHashtable = new Hashtable(); 
    paramHashtable.Add("value1", _fieldIndex); 
    paramHashtable.Add("value2", floatVal); 
    paramHashtable.Add("value3", stringVal); 
    paramHashtable.Add("value4", boolVal); 
    paramHashtable.Add("value5", gObjVal); 

    //Include the oncompleteparams parameter to the hashtable 
    hashtable.Add("oncompleteparams", paramHashtable); 
    iTween.MoveTo(gameObject, hashtable); 
} 

public void afterPlayerMove(object cmpParams) 
{ 
    Hashtable hstbl = (Hashtable)cmpParams; 
    Debug.Log("Your int value " + (int)hstbl["value1"]); 
    Debug.Log("Your float value " + (float)hstbl["value2"]); 
    Debug.Log("Your string value " + (string)hstbl["value3"]); 
    Debug.Log("Your bool value " + (bool)hstbl["value4"]); 
    Debug.Log("Your GameObject value " + (GameObject)hstbl["value5"]); 
} 
0

また、あなたが直接Arraysを使用することができます。たとえば:あなただけで動作するようにインデックスを持っているので、もちろん方法

void SomeMethod(int[] values) { 
    Debug.Log(string.Format("Value1: {0}; Number: {1}; Value2: {2}", 
     values[0], values[1], values[2])); 
} 

と一緒

"oncomplete", "SomeMethod", 
"oncompleteparams", new int[]{value1, 40, value2} 

あなたはHashTableに比べて、ここでいくつかの読みやすさを失うことになるが、関係する一切の鋳造はありません。

関連する問題