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]));
}
当然,与哈希表相比,这里的可读性会有所下降,因为您只需要使用索引,而不需要强制转换