Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Unity iTween插件中使用oncompleteparams?_C#_Animation_Unity3d_Callback_Itween - Fatal编程技术网

C# 如何在Unity iTween插件中使用oncompleteparams?

C# 如何在Unity iTween插件中使用oncompleteparams?,c#,animation,unity3d,callback,itween,C#,Animation,Unity3d,Callback,Itween,我有密码: iTween.MoveTo( gameObject, iTween.Hash("x",_x,"z",_y, "time", 2.0f, "easetype", iTween.EaseType.easeInExpo, "oncomplete", "afterPlayerMove", "oncompleteparams", iTween.Hash("value", _fieldIndex) )); 但我不知道如何使用oncompleteparams。 官方报告中没有任何例子 如何使用o

我有密码:

iTween.MoveTo(
gameObject,
iTween.Hash("x",_x,"z",_y, "time", 2.0f, "easetype",
iTween.EaseType.easeInExpo,
"oncomplete", "afterPlayerMove",
"oncompleteparams", iTween.Hash("value", _fieldIndex)
));
但我不知道如何使用oncompleteparams。 官方报告中没有任何例子

如何使用oncompleteparams?

Itween.MoveTo
函数的直接文档

oncompleteparams需要
对象
作为参数。这意味着几乎任何数据类型都可以传递给它。例如,
string
bool
int
float
double
对象实例
是可以传递给它的数据类型之一

在回调端,使回调函数以对象作为参数。在回调函数中,将
对象
参数强制转换为传递给它的数据类型

例如:

"oncomplete", "afterPlayerMove",
"oncompleteparams", 5)
回拨:

public void afterPlayerMove(object cmpParams)
{
    Debug.Log("Result" + (int)cmpParams);
}
如您所见,我们将5传递给
oncompleteparams
函数,5是一个整数。在
afterPlayerMove
回调函数中,我们将其转换回整数以获得结果


在您的示例中,您对
oncompleteparams
使用了
iTween.Hash
,因此必须强制转换为
Hashtable
,因为iTween.Hash返回
Hashtable
。之后,要获取哈希表中的值,还必须强制转换为该类型

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

public void afterPlayerMove(object cmpParams)
{
    Debug.Log("Result" + (int)cmpParams);
}
假设
\u fieldIndex
int

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"]);
}
Itween.MoveTo
函数的直接文档

oncompleteparams需要
对象
作为参数。这意味着几乎任何数据类型都可以传递给它。例如,
string
bool
int
float
double
对象实例
是可以传递给它的数据类型之一

在回调端,使回调函数以对象作为参数。在回调函数中,将
对象
参数强制转换为传递给它的数据类型

例如:

"oncomplete", "afterPlayerMove",
"oncompleteparams", 5)
回拨:

public void afterPlayerMove(object cmpParams)
{
    Debug.Log("Result" + (int)cmpParams);
}
如您所见,我们将5传递给
oncompleteparams
函数,5是一个整数。在
afterPlayerMove
回调函数中,我们将其转换回整数以获得结果


在您的示例中,您对
oncompleteparams
使用了
iTween.Hash
,因此必须强制转换为
Hashtable
,因为iTween.Hash返回
Hashtable
。之后,要获取哈希表中的值,还必须强制转换为该类型

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

public void afterPlayerMove(object cmpParams)
{
    Debug.Log("Result" + (int)cmpParams);
}
假设
\u fieldIndex
int

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"]);
}

此外,您还可以直接使用
数组
。例如:

"oncomplete", "SomeMethod", 
"oncompleteparams", new int[]{value1, 40, value2}
连同方法

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}
连同方法

void SomeMethod(int[] values) {
    Debug.Log(string.Format("Value1: {0}; Number: {1}; Value2: {2}",
        values[0], values[1], values[2]));
}
当然,与
哈希表相比,这里的可读性会有所下降,因为您只需要使用索引,而不需要强制转换